在使用cmake-gui的过程中,最下面的框是运行的结果,这里面展示的所有红色部分都需要解决。但上面的配置窗口上也会被标记为红色,这些红色条目仅仅提示我们那些配置可以调整,所以不要被上面框内的红色吓到了。
然后Make OpenCV
在opencv目录下
sudo make
sudo make install
安装是否完成,可以通过进入到python3, 输入 Import cv2
如果没有异常就标识Opencv 安装成功。
配置OpenCV动态库环境/(程序执行时加载动态库*.so的路径)
新编译出来的opencv4.pc 会安装在/usr/local/lib/pkgconfig/opencv.pc
OpenCV的库 /usr/local/opencv4/lib
pkg-config --modversion opencv4 这个命令会在/usr/bin/pkgconfig/下先搜索
然后再在/usr/local/bin/pkgconfig下搜索。如果出现版本不对的情况,把第一个目录下的删除掉即可。
sudo vim /etc/bash.bashrc PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv4/lib/pkgconfig export PKG_CONFIG_PATH验证是否配置完成:
pkg-config --libs opencv4-L/usr/local/opencv4/lib -lopencv_world
错误及解决办法
No OpenGL support
出现如下错误:
error: (-218:No OpenGL support) Library was built without OpenGL support in function ‘cvNamedWindow’
解决办法:在cmake-gui上的确勾选了,但依旧要在CMakeList.txt中修改
打开CMakeList.txt文件,搜索WITH_OPENGL 然后修改(WITH_OPENGL “Include OpenGL support” OFF 为(WITH_OPENGL “Include OpenGL support” ON
原来是机器里装了gtk3,所以
-D WITH_GTK_2_X=ON
opencv默认安装是不支持opengl的,机器里恰巧又没有QT,所以没有去检查OpenGL项目。
看来是gtk3与gtkglext不兼容,为了支持opengl,只能使用gtk2了。在cmake的时候,再增加一个选项
HAVE_GTKGLEXT==FALSE
就OK了。
如果采用cmake-gui , 只需要将WITH_GTK_2_X上勾选就可以。
测试Opencv
在~/git/libs/opencv2021/opencv/samples/cpp/example_cmake
内分别执行
cmake .
make
./opencv_example
就会显示Hello world.
OPENCV_EXTRA_MODULES_PATH 设置为 /pathto/opencv_contrib/modules
我的是/home/edward/git/opencv/opencv_contrib/modules
如果出现无法下载xfeatures2d的情况,就多按configure按钮,一般就能完成下载。
CUDA_TOOLKIT_ROOT_DIR , 需要指定为cuda的位置 /usr/local/cuda
然后执行
sudo make时可能出现 nvcc fatal : unsupported gpu architecture \'compute_30\' 错误
在cmake-gui界面,设置 CUDA_GENERATION=Kepler,本人环境是设置为auto,Turing
4.1)不同NVIDIA显卡对应的SM架构(CUDA arch and CUDA gencode)
Turing (CUDA 10及以上版本) SM75 or SM_75, compute_75 – GTX Turing – GTX 1660 Ti,RTX 2060, RTX 2070, RTX 2080,Titan RTX,Quadro RTX 4000, Quadro RTX 5000, Quadro RTX 6000, Quadro RTX 8000
5)在之前安装OK,后面安装其他库的是否出现如下异常:
nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:220 (message):
Error generating
/home/edward/git/libs/opencv2021/opencv/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o
--不知道是什么异常....网上也找不到解决的办法...网上说是某个cmake文件中 - 给写成了中文的-。
解决办法:(在编译其他文件的时候,可能会用新版本的gcc,所以需要切换一下)
切换到gcc5
/usr/bin/gcc-5
/usr/bin/g++-5
export CC=http://www.likecs.com/usr/bin/gcc-5
export CXX=http://www.likecs.com/usr/bin/g++-5
cmake /path/to/your/project
5.1) home/edward/git/libs/opencv2021/opencv/modules/core/src/cuda/gpu_mat.cu:43:10: fatal error: opencv2/opencv_modules.hpp: No such file or directory
#include "opencv2/opencv_modules.hpp"
解决办法:把/usr/local/include/opencv4/opencv2内的内容拷贝到/usr/local/include/opencv2内。这样就可以找到了。
5.2 /usr/local/include/opencv2/core/cvdef.h:73:10: fatal error: cvconfig.h: No such file or directory #include "cvconfig.h"
将#include "cvconfig.h" 改为 "opencv2/cvconfig.h"
5.3 usr/local/include/opencv2/core/cv_cpu_dispatch.h:7:10: fatal error: cv_cpu_config.h: No such file or directory
这里cv_cpu_config.h是在build目录下的一个文件,不知如何处理。
this might not work. you\'re supposed to build the apps along with the opencv libs from src, by enabling
BUILD_opencv_apps=ON in cmake
修改后也还是出现这个问题