Ubuntu OpenCV 常见问题
1. 编译安装OpenCV
参考:http://blog.youkuaiyun.com/tkchengzi/article/details/52939526 http://www.cnblogs.com/lvchaoshun/p/6410880.html
-
安装依赖
- 安装GCC:
sudo apt-get install build-essential - 安装Cmake:
sudo apt-get install cmake - 安装GTK:
sudo apt-get install libgtk2.0-dev( 编译不开GTK可能导致cv.imshow()报错 ) - 安装pkg-config:
sudo apt-get install pkg-config - 安装媒体包:
sudo apt-get install ffmpeg(不装Opencv会无法读取视频文件) - 其他:
sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
- 安装GCC:
-
编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_GTK=ON ..
加上-D WITH_CUDA=OFF可以快速编译安装
注意WITH_GTK=ON.. -
环境变量:
sudo sh -c 'echo "/usr/local/lib">/etc/ld.so.conf.d/opencv.conf'
sudo ldconfig重启生效
-
CmakeLists 添加Opencv:
cmake_minimum_required(VERSION 2.8) project(testcv) set(CMAKE_CXX_STANDARD 11) #FIND_PACKAGE(OpenCV 2.4.13 REQUIRED PATHS "/home/wurui/opencv-2.4.13/cmake/OpenCVConfig.cmake") FIND_PACKAGE(OpenCV REQUIRED) set(SOURCE_FILES main.cpp) add_executable(testcv ${SOURCE_FILES}) target_link_libraries(testcv ${OpenCV_LIBS})
2. 常见错误
-
cv.imshow() 报错 GTK:
-
安装GTK:
sudo apt-get install libgtk2.0-dev -
编译开启GTK:
camke -D WITH_GTK=ON..
-
-
opencv无法读取视频文件和摄像头:
-
安装媒体依赖ffmpeg:
sudo apt-get install ffmpeg
-
-
[ERRO]/usr/bin/ld: cannot find -lopencv_dep_cudart:
-
set CUDA_USE_STATIC_CUDA_RUNTIME=OFF:
cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF ..
-
-
CmakeLists cmake 报错 opencv NOT FOUND:
-
usr/local/下去查找OpencvConfig.cmake文件,会找到不止一个,打开看可能发现是多个opencv版本导致找错了,则在CmakeLists中指定OpencvConfig.cmake文件:FIND_PACKAGE(OpenCV 2.4.13 REQUIRED PATHS "/home/wurui/opencv-2.4.13/cmake/OpenCVConfig.cmake") -
或者在CmakeLists中添加,指定到安装路径,如"opencv/distribute" 或 “usr/local”:
(set CMAKE_PREFIX_PATH path_to_opencv) -
或者指定路径到编译时的路径,如“opencv/release”:
(set OpenCV_DIR path_to_opencv)
-
##3. OpenCV Contrib
- 从opencv3开始,常用的特征点检测和特征匹配(xfeature2d)移到contrib里了,要使用contrib需要单独下载,和opencv一起编译。只要在编译opencv时,cmake添加一个选项就好:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/opencv-3.3.0/distribute -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_CUDA=OFF -D WITH_GTK=ON -D OPENCV_EXTRA_MODULES_PATH=/home/wurui/opencv/opencv-3.3.0/opencv_contrib-3.3.0/modules ..
注:为了项目打包迁移方便,设置独立安装目录,没安装在/usr/local里。
- 编译opencv_contrib 3.3.0的话会遇到error,下载文件时报错。要去contrib对应的子模块(没记错的话要改3处,dnn, dnn_modern ,datasets)中找到CmakeLists, 把和DOWNLOAD相关的
FILE改成PACKAGE - 还可能遇到头文件找不到的错,把contrib/modules里对应的头文件靠贝到opencv对应的include里就可以了
- opencv-4.1.0,加入了DIS光流,cmake编译遇到
optflow,ximgproc等modules不在modules to be built中,是依赖不全,我是没有关闭opencl支持:
cmake -DCMAKE_BUILD_TYPE=RELEASE -DOPENCL=OFF -DWITH_OPENCL=OFF -DOPENCV_EXTRA_MODULES_PATH=../../opencv-4.1-release/opencv_contrib-4.1.0/modules -DCMAKE_INSTALL_PREFIX=../distribute ..
3178

被折叠的 条评论
为什么被折叠?



