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,如下图:



CentOS系统上编译、安装、配置OpenCV_第1张图片


万一还是不行的话,就用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



你可能感兴趣的:(linux应用)