• CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2


    已測试环境:

    1. CentOS 6.3 32bit
    2. CentOS 6.5 64bit

    以前在CentOS 6.3 32bit安装过OpenCV,參见CentOS 6.3中安装OpenCV2.3.1,现在换了64bit系统,大刀阔斧,又一次来一遍。

    检查并安装相关程序。确保gtk成功安装。否则无法显示图片

    yum install gcc-c++              # g++编译
    yum install gtk-devel            # 反正是gtk神马的。不一定就是gtk-devel,能够使用*gtk-devel*匹配
    yum install gimp-devel
    yum install gimp-devel-tools
    yum install gimp-help-browser
    yum install zlib-devel
    yum install libtiff-devel        # tiff格式图片支持
    yum install libjpeg-devel        # jpeg图片支持
    yum install libpng-devel         # png图片支持
    yum install gstreamer-devel      # 处理MP3、Ogg、MPEG1、MPEG2、AVI等格式的多媒体数据
    yum install libavc1394-devel     # 1394音频接口的控制命令集
    yum install libraw1394-devel
    yum install libdc1394-devel
    yum install jasper-devel
    yum install jasper-utils
    yum install cmake                # 方便编译构建OpenCV的工具
    yum install swig
    yum install python               # python环境支持
    yum install libtool
    yum install nasm                 # 汇编工具
    

    安装ffmpeg2.1.2

    ffmpeg没有现成的用于CentOS的rpm包。因此须要使用源代码编译安装,

    ./configure --enable-shared –disable-yasm
    make
    make install
    

    此时,ffmpeg默认安装到/usr/local以下.

    安装OpenCV-2.3.1

    1. 使用vi打开CMakeLists.txt文件,找到以下一行后将其凝视(#)

      set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS${CMAKE_CONFIGURATION_TYPES} )
      # set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS${CMAKE_CONFIGURATION_TYPES} )
      
    2. 使用vi打开CMakeLists.txt文件,搜索keywordffmpeg。找到相应位置。

      if(EXISTS /usr/include/ffmpeg/libavformat/avformat.hOR HAVE_FFMPEG_SWSCALE)
      

      确认上面的文件夹是/usr/include,假设在安装ffmpeg时。改动了路径。则作相应的改动,现在我们能够不动。

    3. 到opencv源代码主文件夹写下,依次运行

      mkdir release
      cd release
      cmake ../
      make
      make install
      

      等待安装结束,默认安装到位置/usr/local/。

    測试

    #include <cv.h>
    #include <highgui.h>
    
    using namespace cv;
    int main( int argc, char** argv )
    {
      Mat image;
      image = imread(argv[1], 1 );
    
      if( argc != 2 ||!image.data )
        {
          printf("No image data 
    " );
          return -1;
        }
      namedWindow("Display Image", CV_WINDOW_AUTOSIZE );
      imshow("Display Image", image );
      waitKey(0);
    
      return 0;
    }
    

    编写Makefile,

    SRC=DisplayImage.cpp
    LIB=-L/usr/local/lib/
    INC=-I/usr/local/include/opencv/
    Test:$(SRC)
       g++ -o Test $(LIB)$(INC) -lopencv_core -lopencv_highgui -lopencv_ml $^
    

    运行make,没有错误。继续运行,./Test {ImagePathName},出现“不能链接到动态库”的错误。大致例如以下:

    error while loading shared libraries: libopencv_core.so.2.3: cannot open shared object file: No such file or directory
    

    解决的方法:

    cd /etc/ld.so.conf.d/   # 该文件夹下存放了各种动态链接库的路径信息
    vim usr-lib.conf
    

    加入例如以下信息(opencv的lib所在路径)

    /usr/local/lib
    

    保存文件后运行ldconfig命令就可以。

    又一次运行。没问题,收工。

    result

  • 相关阅读:
    没有被实例化的类 中的 非static成员函数竟然也可以被调用。。。前提是该成员函数没有用到成员变量
    c++注意
    关于类大小的小试验
    C语言|博客作业02
    在C#中进行时间和时间戳的转换
    正则表达式中匹配中括号 [ ]
    在C#中将对象序列化成Json格式
    在MSSQL中的简单数据类型递归
    HTML中padding和margin的区别和用法
    C#中的对称加密
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6707721.html
Copyright © 2020-2023  润新知