感谢支持
我们一直在努力

基于Ubuntu 11.10/12.04编译OpenCV 2.x(适用于Fedora和红帽子RHEL 6.2)

我这个人还是比较青睐于红帽子系统的,目前经常使用的Linux是rhel 6.2和Fedora 15,毕竟红帽是那么的稳定与方便,只不过资源不太好找。在编译Learning OpenCV第二章第二个视频例子的时候却不能运行,我估摸着可能是解码器的问题,听朋友说Ubuntu比较方便,于是便下载安装,并又再对OpenCV进行重新编译,事实证明完全没有问题。
    还有,Linux下源码我只在Ubuntu 11.10/12.04和rhel 6.2下编译成功了,并且没有任何问题,只不过视频播放在rhel下比较难解决,不像ubuntu直接更新插件就可以了。
    首先要确保ubuntu已经安装GTK+ 2.x(可以执行“pkg-config –modversion gtk+-2.0”命令查看GTK+ 2.x版本,见图1)或者Carbon,否则可能导致程序不能正常运行(如图2所示,这里显示的信息是之前在Ubuntu 11.10版本编译之后,运行程序出现的错误提示信息[安装完成gtk+ 2.x之后,程序正常运行],但是下面是我在Ubuntu 12.04下编译配置的)。


图1 没有安装GTK+ 2.x
 
图2 程序运行错误(因开始编译OpenCV时没有安装GTK+ 2.x)    可见,我的电脑没有安装GTK+ 2.x,故现在要安装GTK+ 2.x,安装GTK环境只要安装一个gnome-core-devel就可以了,里面集成了很多其他的包。
    即执行下面命令,注意在安装软件之前要配置好网络(VM下网络配置可参考本人博文:VMware WorkStation的三种网络连接方式 http://www.linuxidc.com/Linux/2012-05/59466.htm):


  1. $ sudo apt-get install gnome-core-devel  
    也可以使用如下命令只安装GTK+ 2.x:


  1. $ sudo apt-get install libgtk2.0-dev  
或者


  1. $ sudo apt-get install libgtk2.0*  
    再执行如下命令,以用于在编译GTK程序时自动找出头文件及库文件位置:


  1. $ sudo apt-get install pkg-config  
    最后,使用如下命令查看GTK+ 2.x版本


  1. $ pkg-config –modversion gtk+-2.0  
    在整个过程中使用到的软件包有lena(1).tiff、Video.avi、QtSdk-offline-linux-x86-v1.2.1.run、cmake-2.8.8.tar.gz和OpenCV-2.3.1a.tar.bz2,如图3所示,本人已经把这几个文件(压缩包)放在桌面上了。

 
图3 将预使用的文件放在桌面上一、首先要安装cmake
Step1.1 具体操作如下:


  1. $ tar zxvf cmake-2.8.8.tar.gz  
  2. …  
  3. $ cd cmake-2.8.8  
  4. …  
  5. $ ./bootstrap  
  6. …  
    如果执行上面命令后出现如下错误,请执行命令“sudo apt-get install g++”安装C++编译器。


  1. $ ./bootstrap   
  2. ———————————————  
  3. CMake 2.8.8, Copyright 2000-2011 Kitware, Inc.  
  4. C compiler on this system is: cc   
  5. ———————————————  
  6. Error when bootstrapping CMake:  
  7. Cannot find appropriate C++ compiler on this system.  
  8. Please specify one using environment variable CXX.  
  9. See cmake_bootstrap.log for compilers attempted.  
  10. ———————————————  
  11. Log of errors: /home/jiya/Desktop/cmake-2.8.8/Bootstrap.cmk/cmake_bootstrap.log  
  12. ———————————————  
    这个操作需要消耗的时间比较长,这里可以先喝杯茶继续等。
Step1.2 完成后,会看到提示“CMake has bootstrapped.  Now run make.”,然后执行命令:


  1. — Configuring done  
  2. — Generating done  
  3. — Build files have been written to: /home/jiya/Desktop/cmake-2.8.8  
  4. ———————————————  
  5. CMake has bootstrapped.  Now run make.  
  6. $  
  7. …  
  8. $ make  
  9. …  
    同样的执行完这个操作后也要稍等片刻。
Step1.3 然后使用如下命令安装到系统(此时若无权限,请使用root进行操作,可以使用“sudo su”命令切换root用户):


  1. $ sudo make install  
  2. …  
Step1.4 这时我们可以使用“cmake –version”命令来查看终端是否有关于cmake的版本信息。如果没有的话,我们就需要修改用户的PATH路径,把cmake路径加入用户环境变量,可以运行如下命令:


  1. $ echo “export PATH=$PATH:/usr/local/bin” >> ~/.bashrc  
    注意:这里我们使用的是root用户修改的,因此只对root用户生效!如果其他用户也要使用cmake命令,再使用其他用户登录终端后修改用户环境变量。
    也可以修改~/.bashrc文件,如下修改在文件最后添加上面的代码。
注意这里与windows下面的环境变量不同的是环境变量之间是用冒号“:”分隔开的,而非分号“;”,重启终端使用户变量生效。

    测试:重新登录系统(不必重启机器,开始->logout 或者重新打开终端即可),使以上设置生效,在命令行输入cmake –version,会出现如下信息,这说明cmake环境已经成功配置并可以正常使用了。 


  1. $ cmake –version  
  2. cmake version 2.8.8  
  3. $  
二、接下来我们来编译Opencv
Step2.1 返回到桌面,使用如下命令:

 


  1. $ tar -jxvf OpenCV-2.3.1a.tar.bz2  
  2. $ cd OpenCV-2.3.1  
  3. $ mkdir release  
  4. $ cd release  
  5. $   
Step2.2 进入release目录后,执行如下命令(注意这是一整条命令且最后有两点“..”),其中“CMAKE_INSTALL_PREFIX=/home/OpenCV-2.3.1a”表示当我们使用“make install”命令安装OpenCV的时候,会将相关


  1. $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV-2.3.1a -D BUILD_Python_SUPPORT=ON ..  
    执行上述命令后,release目录下会生产Makefile文件等,如图4所示:

 
图4 release目录下生成的文件及目录Step2.3 便可执行:

 


  1. $ make  
    等待编译……
Step2.4 编译完成后运行“sudo make install”命令,会在/home/OpenCV-2.3.1a目录下生成opencv相关目录及文件,包括bin、lib、include等,如图5所示。

 
图5 /home/OpenCV-2.3.1a目录下生成的相关目录及文件三、最后我们来配置编译环境,这里我们选择Qt IDE
Step3.1 下载完成后,同样的拷贝到Ubuntu桌面上。执行如下命令:


  1. $ chmod +x QtSdk-offline-linux-x86-v1.2.1.run   
  2. $ ./QtSdk-offline-linux-x86-v1.2.1.run    
    接着,按着向导一步一步地安装Qt即可(一直单击“Next”按钮)。
    下面我们配置Qt下OpenCV开发环境:
Step3.2 修改opencv.pc文件(这一步不是必需的)
    假设我们要将OpenCV相关文件放在/home/OpenCV-2.3.1a目录下(使用“cp /home/OpenCV-2.3.1a /opt -r”),放在/opt/OpenCV-2.3.1a目录下,这时我们要修改一个文件。该文件位于“lib/pkgconfig”目录下,即“lib/pkgconfig/opencv.pc”文件,使用gedit打开这个文件,将“prefix=/opt/OpenCV-2.3.1a”改为“prefix=/opt/OpenCV-2.3.1a”保存即可(如图6所示)。

 
图6 修改/opt/OpenCV-2.3.1a/lib/pkgconfig/opencv.pc文件并保存    然后,将opencv.pc拷贝到/usr/share/pkgconfig目录,此时可以使用“pkg-config opencv –cflags –libs”测试opencv.pc配置是否生效(如图7所示)。

 
如图7 测试opencv.pc配置是否生效Step3.3 使用如下命令修改/etc/ld.so.conf文件,将OpenCV链接库添加进去。(此时若无权限,请使用root进行操作,可以使用“sudo su”命令切换root用户)。


  1. $ echo “/opt/OpenCV-2.3.1a/lib ” >> /etc/ld.so.conf   
Step3.4 使用Qt IDE新建项目,依次选择“新建项目-其他项目-空的Qt项目”,单击“选择”,浏览到指定目录,依次单击“下一步”即可。
    在项目文件(*.pro,如本人新建项目的名称为OpenCV,即需要修改OpenCV.pro)中添加如下内容:


  1. INCLUDEPATH += /opt/OpenCV-2.3.1a/include/  
  2. LIBS += `pkg-config opencv –cflags –libs`  
    其中“LIBS += `pkg-config opencv –cflags –libs`”也可以使用如下形式:


  1. LIBS += /opt/OpenCV-2.3.1a/lib/libopencv_calib3d.so.2.3.1 \  
  2.         /opt/OpenCV-2.3.1a/lib/libopencv_contrib.so.2.3.1 \  
  3.         /opt/OpenCV-2.3.1a/lib/libopencv_core.so.2.3.1 \  
  4.         /opt/OpenCV-2.3.1a/lib/libopencv_features2d.so.2.3.1 \  
  5.         /opt/OpenCV-2.3.1a/lib/libopencv_flann.so.2.3.1 \  
  6.         /opt/OpenCV-2.3.1a/lib/libopencv_gpu.so.2.3.1 \  
  7.         /opt/OpenCV-2.3.1a/lib/libopencv_highgui.so.2.3.1 \  
  8.         /opt/OpenCV-2.3.1a/lib/libopencv_imgproc.so.2.3.1 \  
  9.         /opt/OpenCV-2.3.1a/lib/libopencv_legacy.so.2.3.1 \  
  10.         /opt/OpenCV-2.3.1a/lib/libopencv_ml.so.2.3.1 \  
  11.         /opt/OpenCV-2.3.1a/lib/libopencv_objdetect.so.2.3.1 \  
  12.         /opt/OpenCV-2.3.1a/lib/libopencv_ts.so.2.3.1 \  
  13.         /opt/OpenCV-2.3.1a/lib/libopencv_video.so.2.3.1 \  
    新建源文件(*.cpp,,如本人新建的源文件的文件名为OpenCV.cpp),编写代码,构建-构建所有项目(Ctrl+Shift+B)、构建-运行(Ctrl+R)即可。测试例子(源码):


  1. #include <opencv/highgui.h>   
  2.   
  3. int main( int argc, char** argv ) {  
  4.     IplImage* img = cvLoadImage( argv[1] );  
  5.     cvNamedWindow( “OpenCV”, CV_WINDOW_AUTOSIZE );  
  6.     cvShowImage( “OpenCV”, img );  
  7.     cvWaitKey(0);  
  8.     cvReleaseImage( &img );  
  9.     cvDestroyWindow( “OpenCV” );  
  10.   
  11.     return ( 0 );  
  12. }  
    编译完成后,在可执行文件所在的目录执行./OpenCV lena\(1\).tiff,效果如图8所示:


图8 测试效果    备注:如果在Linux下面使用cvCaptureFromFile( )、cvCaptureFromAVI等函数不能够打开视频,这是因为统解码器的问题。我们只需要安装ffmpeg解码器(注意在执行./configure命令的时候一定要加上“—enable-shared”参数,不然OpenCV将找不到ffmpeg库,如本人使用的命令为“./configure –enable-shared –enable-gpl”)。Ubuntu下也可以打开任意一个视频文件(或者在Ubuntu软件中心),将gstreamer的plugins通通装上。具体方法请问谷哥度娘,这里不做赘述。在Ubuntu下用OpenCV播放视频效果如图7所示:


图7 Ubuntu下OpenCV播放视频效果相关代码如下:


  1. #include <opencv/cv.h>   
  2. #include <opencv/highgui.h>   
  3.   
  4. int  
  5. main( int argc, char **argv )  
  6. {  
  7.     cvNamedWindow( “Video”, CV_WINDOW_FULLSCREEN );  
  8.     CvCapture *capture = cvCreateFileCapture( argv[ 1 ] );  
  9.     IplImage *frame;  
  10.     while (1) {  
  11.         frame = cvQueryFrame( capture );  
  12.         if ( !frame )  
  13.             break;  
  14.         cvShowImage( “Video”, frame );  
  15.         char c = cvWaitKey( 33 );  
  16.         if ( c == 27 )  
  17.             break;  
  18.     }  
  19.     cvReleaseCapture( &capture );  
  20.     cvDestroyWindow( “Video” );  
  21.   
  22.     return ( 0 );  
  23. }  
附录:
    Ubuntu中打开终端的方法:
法1. (当然是笨方法了),依次打开(应用程序-附件-终端),如果闲的麻烦,可以直接把它添加面板,这样也方便点。
法2.首先按住Alt,然后按一下F2,出来一个运行框,在里面输入 gnome-terminal即可运行。在这个运行框里,可以执 行很多命令,想当于Windows的[运行](Windows+R键),不过很难记住。
法3. 可以把终端窗口打开放在鼠标右键,效果是在桌面或文件夹内的空白处右键点击,将出现“从终端打开”的快捷方式。那个需要使用一个软件。安装很简单,打开终端,在里面输入以下命令:


  1. $ sudo apt-get install nautilus-open-terminal  
    然后注销下,即可看到!

参考链接:


Ubuntu下GTK的安装、编译和测试 http://www.linuxidc.com/Linux/2012-05/59468.htm


Ubuntu中打开终端的方法 http://www.linuxidc.com/Linux/2012-05/59469.htm


附件下载:
Ubuntu系统光盘:
http://www.linuxidc.com/Linux/2011-10/45253.htm ubuntu-11.10-desktop-i386.iso
http://www.linuxidc.com/Linux/2012-04/59239.htm ubuntu-12.04-desktop-i386.iso


编译后的文件:
QtSdk-offline-linux-x86-v1.2.1.run
OpenCV-2.3.1a(ubuntu-11.10).tar.bz2
OpenCV-2.3.1a(ubuntu-12.04).tar.bz2
OpenCV-2.3.1a(rhel-6.2).tar.gz


源代码:
OpenCV-2.3.1a.tar.bz2
cmake-2.8.8.tar.gz


编译后的文件与源代码下砸地址:


**************************************************************


下载在Linux公社的1号FTP服务器里,下载地址:


FTP地址:ftp://www.linuxidc.com


用户名:www.linuxidc.com


密码:www.muu.cc


在 2012年LinuxIDC.com\5月\基于Ubuntu 11.10&12.04编译OpenCV 2.x(适用于Fedora和红帽子RHEL 6.2))


下载方法见 http://www.linuxidc.net/thread-1187-1-1.html


**************************************************************

赞(0) 打赏
转载请注明出处:服务器评测 » 基于Ubuntu 11.10/12.04编译OpenCV 2.x(适用于Fedora和红帽子RHEL 6.2)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏