1、下载
(1)opencv下载:
你去官网下载opencv,在本教程中选用的时opencv4.5.3。下载链接http://opencv.org/releases.html,选择sources版本.
(2)opencv_contrib4.5.3下载连接:https://hub.fastgit.org/opencv/opencv_contrib/releases/tag/4.5.3
(3)下载完后,将opencv4.5.3和opencv_contrib4.5.3分别解压。将解压好的opencv_contrib4.5.3放在opencv4.5.3下。
(4)在opencv4.5.3新建build的文件夹,并进入build文件夹下
命令:
cd opencv4.5.3
mkdir build
cd build
2、编译安装
(1)进入build文件夹后,执行如下命令:
cmake -D BUILD_TIFF=ON -D BUILD_opencv_java=OFF -D WITH_CUDA=OFF -D ENABLE_AVX=ON -D WITH_OPENGL=ON -D WITH_OPENCL=ON -D WITH_IPP=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D WITH_VTK=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python2=OFF -D BUILD_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/cpe/opencv-4.5.3/opencv_contrib-4.5.3/modules -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python3) -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
其中OPENCV_EXTRA_MODULES_PATH该项改成相应的自己的opencv_contrib的路径。
(2)执行命令:
make -j8
(3)执行命令:
sudo make install
3、遇到的问题
注:
问题1、
我在执行make -j8时遇到“gedit: symbol lookup error: /home/chujie/anaconda3/lib/libgobject-2.0.so.0:”找不到的问题:
解决办法:
修改环境变量,让gedit链接到正确的库。
# 编辑.bashrc文件
vim ~/.bashrc
# 按快捷键i开始编辑文件,在文件最后一行加上动态链接库路径
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
# 让配置文件生效
source ~/.bashrc
# 重新查看gedit的链接库
cd /usr/bin
ldd gedit | grep libgobject-2.0
# 链接库已经变成:
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f0b242ad000)
问题1、
遇到问题“No module named ‘gdbm’”,
总是提示“ModuleNotFoundError: No module named ‘_gdbm’”
我做了以下更改:
a、
安装gdbm开发库(兼容dbm和ndbm)
$ sudo apt-get -y install libgdbm-dev
b、
将CMakeLists.txt里面设置 的cmake的最低版本从3.5改为2.6
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
否则执行
cmake .
时会出现一下错误:
“ The target name “test” is reserved or not valid for certain CMake features,
such as generator expressions, and may result in undefined behavior.””
参考文章:https://blog.csdn.net/qq_33970986/article/details/103270699
https://blog.csdn.net/zjchenchujie/article/details/103022106
https://blog.csdn.net/github_30605157/article/details/79839177
https://www.cnblogs.com/timkyle/archive/2012/12/05/2803788.html