Ubuntu OpenCv 常见问题

Ubuntu OpenCV 常见问题

1. 编译安装OpenCV

参考:http://blog.youkuaiyun.com/tkchengzi/article/details/52939526 http://www.cnblogs.com/lvchaoshun/p/6410880.html

  • 安装依赖

    1. 安装GCC:sudo apt-get install build-essential
    2. 安装Cmake:sudo apt-get install cmake
    3. 安装GTK:sudo apt-get install libgtk2.0-dev ( 编译不开GTK可能导致cv.imshow()报错 )
    4. 安装pkg-config:sudo apt-get install pkg-config
    5. 安装媒体包:sudo apt-get install ffmpeg (不装Opencv会无法读取视频文件)
    6. 其他: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
  • 编译:

    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. 常见错误

  1. cv.imshow() 报错 GTK:

    • 安装GTK:sudo apt-get install libgtk2.0-dev

    • 编译开启GTK:camke -D WITH_GTK=ON..

  2. opencv无法读取视频文件和摄像头:

    • 安装媒体依赖ffmpeg:sudo apt-get install ffmpeg

  3. [ERRO]/usr/bin/ld: cannot find -lopencv_dep_cudart:

    • set CUDA_USE_STATIC_CUDA_RUNTIME=OFF:cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF ..

  4. 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

  1. 从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里就可以了
  1. opencv-4.1.0,加入了DIS光流,cmake编译遇到optflowximgproc 等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 ..
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值