• CentOS系统上编译、安装、配置OpenCV


    声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流!

    假设CentOS系统下的CodeBlocks已经安装完成,下面我们要在CentOS平台下编译OpenCV,并在CodeBlocks下进行开发测试。

    (1)下载OpenCV源码,并编译安装

    当前最新的版本是OpenCV-2.2,可以从http://sourceforge.net/projects/opencvlibrary/上下载。

    OpenCV的编译方式有两种,一种是传统的./configure ; make ; make install,这种方式适用于OpenCV-1.0,相应的编译过程可以参见这篇文章:http://www.opencv.org.cn/index.php/%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91,另一种方式是使用cmake . ; make ; make install,这种方式适用于OpenCV-2.x。所以,在编译OpenCV-2.2之前,得先在CentOS上安装CMake(http://www.cmake.org/)。

    (1.1) 编译安装cmake:

    假设cmake-2.8.4.tar.gz放在/root/software/cmake-2.8.4.tar.gz

    cd /root/software/

    tar zxvf cmake-2.8.4.tar.gz

    编译安装cmake

    下载cmake源码包cmake-2.8.4.tar.gz,mv到/usr/local/src目录下

    [root@localhost ~]# cd /usr/local/src/  

    [root@localhost src]# tar xzvf cmake-2.8.7.tar.gz   

    [root@localhost src]# cd cmake-2.8.7 

    [root@localhost cmake-2.8.4]# ./bootstrap   

    ---------------------------------------------  

    CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.  

    ---------------------------------------------  

    Error when bootstrapping CMake:  

    Cannot find appropriate C compiler on this system.  

    Please specify one using environment variable CC.  

    See cmake_bootstrap.log for compilers attempted.  

    ---------------------------------------------  

    Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log  

    ---------------------------------------------  

    报错:缺少C的编译器。

    安装gcc编译器

    可以从Linux系统的安装盘中安装,也可以简单地用yum安装

    [root@localhost ~]# yum install gcc  

    继续cmake的安装

    [root@localhost cmake-2.8.4]# ./bootstrap   

    ---------------------------------------------  

    CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.  

    C compiler on this system is: cc   

    ---------------------------------------------  

    Error when bootstrapping CMake:  

    Cannot find appropriate C++ compiler on this system.  

    Please specify one using environment variable CXX.  

    See cmake_bootstrap.log for compilers attempted.  

    ---------------------------------------------  

    Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log  

    ---------------------------------------------  

    再次报错:缺少C++编译器。

    安装gcc-c++编译器

    同样可以从Linux系统的安装盘中安装,或者简单地用yum安装

    [root@localhost ~]# yum install gcc-c++  

    重复上面的操作

    [root@localhost cmake-2.8.4]# ./bootstrap

    没有报错后,编译安装

    [root@localhost cmake-2.8.4]# gmake  

    [root@localhost cmake-2.8.4]# gmake install  

    (1.2)编译安装opencv-2.2:(注意:若需要图形库,要先安装gtk2.x)

    假设OpenCV-2.2.0.tar.bz2放在/root/software/ OpenCV-2.2.0.tar.bz2

    cd /root/software/

    tar jxvf OpenCV-2.2.0.tar.bz2

    cd OpenCV-2.2.0

    mkdir release

    cd release

    cmake ../

    make

    make install

    错误及解决:http://gaodr.blog.163.com/blog/static/10461500820134824949883/

    1) Linking CXX executable ../../bin/opencv_perf_core
    ../../lib/libopencv_highgui.so.2.4.9: undefined reference to `png_read_info@PNG12_0'

    解决方案:修改/opt/opencv2.3.1目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpng,如下图:

    万一还是不行的话,就用locate libpng查看一下,然后逐个按路径删除与libpng相关的所有东西,重新安装libpng库。

    yum remove libpng

    yum install libpng

    yum install libpng-devel

    编译freak.cpp时出现问题:
    错误:在类 ‘GENERAL_REGS’ 中找不到可舍出的寄存器
    经查,与编译优化参数有关,找到编译freak.cpp的编译控制文件
    flags.make与link.txt,将
    编译优化选项从
    -O3 改为
    -O0
    该错误解决。

    出现错误:类似c++: Internal error: Killed (program cc1plus)

    解决方法:cmake是用如下命令

    cmake ../  -DCMAKE_C_FLAGS_RELEASE="-O1 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-O1 -DNDEBUG"
    b)错误:
    Linking CXX executable ../../bin/opencv_perf_core
    ../../lib/libopencv_highgui.so.2.4.5: undefined reference to `png_set_longjmp_fn'
    collect2: ld 返回 1
    make[2]: *** [bin/opencv_perf_core] 错误 1
    make[1]: *** [modules/core/CMakeFiles/opencv_perf_core.dir/all] 错误 2
    经查,与编译libopencv_highgui.so.2.4.5时参数有关,修改控制编译libopencv_highgui.so.2.4.5的文件link.txt
    再修改编译pencv_perf_core的文件link.txt.
    都增加或改为:-lpng  /usr/local/lib/libpng16.so
    该错误解决。
    原因:系统中libpng.so库有不同版本,指定使用libpng16.so

    (1.3)设置环境变量

    这一步与Windows设置系统环境变量的目的是一样的,告诉系统相应的binary files和library files在什么位置。

    cd /etc/ld.so.conf.d/

    vim opencv.conf

    将/usr/local/lib写入文件并保存

    ldconfig

    可以使用locate libcv查看一下相应库文件的位置。

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

    (2)配置OpenCV

    参见http://blog.csdn.net/dupei/archive/2011/05/18/6428283.aspx

    配置完成以后,就可以使用测试用例进行测试了。如果顺利执行起来,说明OpenCV的配置已经完成。

    最后一步,测试openCV库是否可用。

    $ cd ~/openCV/samples/cpp

    $ gcc -I/usr/local/include/opencv -L/usr/local/lib/ -lopencv_highgui -lstdc++ drawing.cpp -o drawing

    $ ./drawing

    报错:OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/armmlinux/zdfwork/project/software/opencv-2.4.9/modules/highgui/src/window.cpp, line 483

    解决:安装gtk2.x

    http://www.jb51.net/article/22134.htm

    Glib安装提示gettext问题的解决方法http://blog.csdn.net/ybdesire/article/details/7249896

    安装libffi库:http://download.chinaunix.net/download/0006000/5819.shtml

    编译glib库是报类似libgettext.so等的错误:http://blog.csdn.net/david_xtd/article/details/7625626

    明明安装了库,还出现类似:configure: error: Library requirements (glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. 的错误:http://blog.csdn.net/ubuntulover/article/details/6978305

  • 相关阅读:
    HTML 网页创建
    CSS3 opacity
    两数相加的和
    九九乘法表
    Linux下的Makefile初入
    linux 下定义寄存器宏 实现类似于STM32的寄存器操作
    Linux 编译与交叉编译
    linux IMX6 汇编点亮一个LED灯
    Linux基本指令与作用
    C# Task 源代码阅读(2)
  • 原文地址:https://www.cnblogs.com/shishupeng/p/5702557.html
Copyright © 2020-2023  润新知