Python项目中,嵌入了C++的程序,这个程序主要用OpenCV包。
开发环境不统一,导致环境部署是遇到很多坑,统一开发环境很重要。环境部署在Arch Linux上,本身对Arch Linux操作不熟悉,特此记录。下面将分别介绍编译OpenCV3.4和4.2版本的过程。
OpenCV编译主要需要OpenCV和OpenCV_contrib文件,下载来源参考以下链接:
OpenCV:
OpenCV_contrib(OpenCV没有吧该包放到官网)
0.依赖环境
安装之前先去官网看下依赖环境:
下载
wget https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
wget https://github.com/opencv/opencv/archive/4.2.0.zip
## 解压
mkdir OpenCV-4.2
unzip -d OpenCV-4.2 opencv-4.2.0.zip # 将OpenCV-4.2.0.zip解压到指定目录
unzip -d OpenCV-4.2 opencv_contrib-4.2.0.zip
unzip用法
2 新建build目录,并cmake
cd OpenCV-4.2/opencv-4.2.0
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE\Debug \
-D CMAKE_INSTALL_PREFIX=~/OpenCV-4.2 \ ##指定编译好后安装的目录
-D OPENCV_EXTRA_MODULES_PATH=~OpenCV-4.2/opencv_contrib-4.2.0/modules \ #OpenCV_contrib 目录
-D OPENCV_GENERATE_PKGCONFIG=ON \ ## 4.0版本默认生产opencv.pc了,需要指定让他生成
-D BUILD_opencv_python3=TRUE \ ## 基于Python3编译
-D BUILD_opencv_python2=OFF \ ## Python2没用了,我就off掉了
-D PYTHON3_EXECUTABLE=/shared/CS/anaconda2/envs/genty/bin/python3.6 \ ## 这是Python3运行目录
-D PYTHON3_LIBRARY=/shared/CS/anaconda2/envs/genty/lib/libpython3.6m.so \ ## Python3 源文件
-D INSTALL_PYTHON_EXAMPLES=OFF \ ## Python、c的例子可生成可不生成
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_LIBV4L=ON \
-D WITH_V4L=OFF \
-D BUILD_EXAMPLES=OFF .. ## ..表示上一级目录,这个不用忘了
cmake编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器、链接器,生成各个目标(静态库,静态库,或者可执行),具体参考这里
make
make install ## 如何你想把opencv安装到系统中用 sudo make install
ldconfig ## 更新路径链接
- IPPICV: Download: ippicv_2019_lnx_intel64_general_20180723.tgz -- Try 1 failed CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
解决:
下载超时,手动下载,在修改配置。
参考: https://www.jianshu.com/p/3c2fc0da7398
.xfeatures2d/vgg: Download: vgg_generated_48.i -- Try 1 failed
解决:
与问题2类似,
下载链接:https://github.com/cbalint13/opencv-dlco/tree/master/workspace/opencv
问题解决参考链接: https://github.com/opencv/opencv_contrib/issues/967
data: Download: face_landmark_model.dat -- Try 1 failed
解决:
与问题2类似
参考链接:https://blog.csdn.net/CSDN330/article/details/86747867
`Build output check failed:
Regex: ‘command line option .* is valid for .* but not for C++’
Output line: ‘cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++’
Compilation failed:
source file: ‘/home/dengqk/opencv/opencv-4.2.0/build/CMakeFiles/CMakeTmp/src.cxx’
check option: ’ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wstrict-prototypes’`
解决:
添加: -D ENABLE_CXX11=ON(待验证)
参考链接:https://github.com/opencv/opencv/issues/9493
/home/dengqk/opencv/opencv-4.2.0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: sys/videoio.h: No such file or directory 1 | #include
解决:
https://stackoverflow.com/questions/45582565/opencv-cmake-error-no-such-file-or-directory-on-ubuntu
安装libv4l-dev(待验证)
参考链接: https://www.archlinux.org/packages/extra/x86_64/v4l-utils/
解决:
参考链接:https://docs.opencv.org/3.4.0/d7/d9f/tutorial_linux_install.html
OpenCV 3.4.0安装跟4.2.0基本差不多,只是遇到的问题有些不一样,在此记录
modules/viz/src/clouds.cpp:80:13: error: ‘class vtkPolyDataMapper’ has no member named ‘Immedi
解决:
VTK版本太高了
参考:https://blog.csdn.net/ljl1015ljl/article/details/102363139
暂时记录这些后面遇到继续添加 2020.4.1
更新 2020.4.2:
Arch Wiki真是个好东西,在arch 上安装的问题可以到官网 bugs栏目找。
后续会在vmware上安装Arch Linux。