美文网首页
opencv相关记录

opencv相关记录

作者: 提着木剑走天下 | 来源:发表于2019-03-16 16:20 被阅读0次

    1.cmakelist找不到opencv

    #find_package(OpenCV 2.4.3 REQUIRED)
    find_package(OpenCV 3.0 QUIET)
    if(NOT OpenCV_FOUND)
       find_package(OpenCV 2.4.3 QUIET)
       if(NOT OpenCV_FOUND)
          message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
       endif()
    endif()
    

    opencv的配置信息

    # Package Information for pkg-config
    prefix=/usr/local
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib
    includedir_old=${prefix}/include/opencv
    includedir_new=${prefix}/include
    
    Name: OpenCV
    Description: Open Source Computer Vision Library
    Version: 3.2.0
    Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_viz -lopencv_core
    Libs.private: -L/usr/lib/x86_64-linux-gnu -lwebp -ljasper -lImath -lIlmImf -lIex -lHalf -lIlmThread -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lgthread-2.0 -lavcodec-ffmpeg -lavformat-ffmpeg -lavutil-ffmpeg -lswscale-ffmpeg -lvtkRenderingOpenGL-6 -lvtkImagingHybrid-6 -lvtkIOImage-6 -lvtkCommonDataModel-6 -lvtkCommonMath-6 -lvtkCommonCore-6 -lvtksys-6 -lvtkCommonMisc-6 -lvtkCommonSystem-6 -lvtkCommonTransforms-6 -lvtkCommonExecutionModel-6 -lvtkDICOMParser-6 -lvtkIOCore-6 -lz -lvtkmetaio-6 -ljpeg -lpng -ltiff -lvtkImagingCore-6 -lvtkRenderingCore-6 -lvtkCommonColor-6 -lvtkFiltersExtraction-6 -lvtkFiltersCore-6 -lvtkFiltersGeneral-6 -lvtkCommonComputationalGeometry-6 -lvtkFiltersStatistics-6 -lvtkImagingFourier-6 -lvtkalglib-6 -lvtkFiltersGeometry-6 -lvtkFiltersSources-6 -lvtkInteractionStyle-6 -lvtkRenderingLOD-6 -lvtkFiltersModeling-6 -lvtkIOPLY-6 -lvtkIOGeometry-6 -ljsoncpp -lvtkFiltersTexture-6 -lvtkRenderingFreeType-6 -lvtkftgl-6 -lvtkIOExport-6 -lvtkRenderingAnnotation-6 -lvtkImagingColor-6 -lvtkRenderingContext2D-6 -lvtkRenderingGL2PS-6 -lvtkRenderingContextOpenGL-6 -L/usr/lib -lgl2ps -lvtkRenderingLabel-6 -ldl -lm -lpthread -lrt
    Cflags: -I${includedir_old} -I${includedir_new}
    
    yjx@yjx-ThinkPad-Edge-E431:~$ pkg-config --modversion opencv
    3.2.0
    
    yjx@yjx-ThinkPad-Edge-E431:~$ pkg-config --cflags opencv
    -I/usr/local/include/opencv -I/usr/local/include
    yjx@yjx-ThinkPad-Edge-E431:~$ pkg-config --libs opencv
    -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_viz -lopencv_core
    

    实在解决不了,就在set上进行修改

    #斧底抽薪
    set (OpenCV_DIR "/home/yjx/3rdparty/opencv-2.4.13.4/build")  
    

    2.

    20170812
    得到opencv的lib配置信息(在ubuntu16.04)

    yjx@yjx-ThinkPad-Edge-E431:~$ pkg-config --libs opencv
    -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_viz -lopencv_core
    

    并将显示的信息添加在QT的配置文件中, 如下
    LIBS += “此处添加显示的配置信息”


    20170815

    double t = (double)cvGetTickCount();
    InitTime = ( (double)cvGetTickCount() - t )/(cvGetTickFrequency()*1000000.0);
    cout<<"FirstTime: "<<t/(cvGetTickFrequency()*1000000.0)<<endl<<endl; 
    

    3.

    卸载opencv

    sudo apt-get remove libopencv-*
    

    查看opencv版本

    pkg-config --modversion opencv
    

    查看opencv安装的目录

    pkg-config --cflags opencv
    

    4. 安装多个版本的opencv

    20171027
    参考博客"http://blog.csdn.net/cumt08113684/article/details/53006376"

    这几天在用代码提取光流的时候,总是会发生opencv VideoCapture打不开视频文件的错误,因此怀疑是opencv有问题,于是决定换个版本重新安装
    我所使用的是Ubuntu15.04,通常Ubuntu系统是自带opencv的,使用命令

    pkg-config --modversion opencv  
    

    可以查看当前的opencv版本,而我的系统自带的是opencv-2.4.9
    因为不知道如何卸载自带的opencv,所以我决定直接安装另一个版本的opencv,即让两个版本opencv共存。首先下载新版本的opencv安装包,我因为实验需要,下载的是opencv-2.4.12,之后解压
    安装一些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 libxine-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  
    

    进入解压后的opencv安装包,新建目录,目录名为build,并进入该目录

    mkdir build && cd build  
    

    输入命令

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON  -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv/2.4.12 ..  
    make -j12  
    sudo make install -j12  
    

    这样opencv-2.4.12就被安装在了/usr/local/opencv/2.4.12目录下.
    接下来要对新安装的opencv-2.4.12进行配置,否则系统默认的还是opencv-2.4.9版本。
    通过修改bashrc文件来设置PKG_ CONFIG_PATH(后来发现好像还需要改一下LD_LIBRARY_PATH)

    sudo gedit ~/.bashrc  
    

    在文件末尾加上

    export PKG_CONFIG_PATH=/usr/local/opencv/2.4.12/lib/pkgconfig  
    export LD_LIBRARY_PATH=/usr/local/opencv/2.4.12/lib  
    

    保存之后,再使用命令

    source ~/.bashrc  
    

    这时候使用命令

    pkg-config --modversion opencv  
    pkg-config --cflags opencv  
    pkg-config --libs opencv  
    

    可以看到全都已经变成了opencv-2.4.12版本了。如果还想使用原来的opencv-2.4.9,只需要再修改PKG_CONFIG_PATH为opencv-2.4.9的pkgconfig路径即可。

    然后如果碰上,opencv的版本在cmake时没有更换编译的版本的时候.修改cmakelist
    参考博文"http://blog.csdn.net/kekong0713/article/details/53688131"

    ubuntu下opencv2.4.10 和 opencv 3.10 多版本切换问题
    原创 2016年12月16日 09:09:08 2142
    1.由于需要,之前系统中是opencv2.4.10版本,后来安装opencv3.10版本,并支持多版本切换。通过以下命令可以查看opencv版本

    pkg-config --modversion opencv  
    

    2.如果编译好并安装了opencv3.10版本,想切换到3.10版本,可以通过如下的方式,
    通过修改bashrc文件来设置PKG_ CONFIG_PATH 和 LD_LIBRARY_PATH的路径来选择对应的opencv版本

    sudo gedit ~/.bashrc  
    

    并在文件的默认追加新编译的3.10版本的路径,也就是cmake时:CMAKE_INSTALL_PREFIX=/usr/local/opencv/3.10

    export PKG_CONFIG_PATH=/usr/local/opencv/3.10/lib/pkgconfig  
    export LD_LIBRARY_PATH=/usr/local/opencv/3.10/lib  
    

    然后执行命令,后面用pkg-config --modversion opencv 查看opencv版本的时候就是3.10版本

    source ~/.bashrc  
    

    3.上面的这些过程并不能保证在写makefile中调用的是3.10版本的库,可能还是调用之前的2.4.10的库,具体还是要在CMakeList.txt中指定要找的opencv的目录,
    opencv3.10的编译目录/usr/local/opencv-3.1.0/build 下找到OpenCVConfig.cmake 文件,并在CMakeList.txt中添加对应的路径信息。这样cmake的时候调用的就是3.10的库,想切换成原来的2.4.10版本只需将第二步的bashrc文件和CMakeList.txt文件中修改的内容改成对应的opencv2.4.10的位置就好了。

    # cmake needs this line  
    cmake_minimum_required(VERSION 2.8)  
    set (OpenCV_DIR "/usr/local/opencv-3.1.0/build")  
    # Define project name  
    project(myTest)  
    # Find OpenCV, you may need to set OpenCV_DIR variable  
    # to the absolute path to the directory containing OpenCVConfig.cmake file  
    # via the command line or GUI  
    find_package(OpenCV REQUIRED)  
    # If the package has been found, several variables will  
    # be set, you can find the full list with descriptions  
    # in the OpenCVConfig.cmake file.  
    # Print some message showing some of them  
    message(STATUS "OpenCV library status:")  
    message(STATUS "    version: ${OpenCV_VERSION}")  
    message(STATUS "    libraries: ${OpenCV_LIBS}")  
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")  
    if(CMAKE_VERSION VERSION_LESS "2.8.11")  
      # Add OpenCV headers location to your include paths  
      include_directories(${OpenCV_INCLUDE_DIRS})  
    endif()  
    # Declare the executable target built from your sources  
    add_executable(demo demo.cpp)  
    # Link your application with OpenCV libraries  
    target_link_libraries(demo ${OpenCV_LIBS})  
    

    5. 额外编译(使用window的ubuntu应用)

    • 出现问题1:Error compiling OpenCV, fatal error: stdlib.h: No such file or directory.
    cd <opencv_build_directory>/build
    cmake  -DENABLE_PRECOMPILED_HEADERS=OFF <opencv_source_directory>
    make
    
    • 出现问题2:fatal error: opencv2/xfeatures2d.hpp: No such file or directory.
      缺少 opencv_contrib,下载所需版本,之后重新编译 OpenCV.
    cd <opencv_build_directory>/build
    cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
    make
    
    • 出现问题3:fatal error: opencv2/viz.hpp: No such file or directory
      可以发现在opencv的编译信息为
      VTK is not found:
    -- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
    

    因此先安装vtk:

    sudo apt-get install libvtk6-dev
    
    cd <opencv_build_directory>/build
    cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules WITH_VTK=ON  <opencv_source_directory>
    make
    
    

    编译样例:

    cmake -DENABLE_PRECOMPILED_HEADERS=OFF -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.1.0/modules ../../opencv-3.1.0
    

    相关文章

      网友评论

          本文标题:opencv相关记录

          本文链接:https://www.haomeiwen.com/subject/fbesmqtx.html