版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。
博客地址:http://blog.csdn.net/shuxiao9058
原始作者:季亚
前言:看过本人博客的朋友都知道,我这个人还是比较青睐于红帽子系统的,目前经常使用的Linux是rhel 6.2和Fedora 15,毕竟红帽是那么的稳定与方便,只不过资源不太好找。在编译Learning OpenCV第二章第二个视频例子的时候却不能运行,我估摸着可能是解码器的问题,听朋友说Ubuntu比较方便,于是便下载安装,并又再对OpenCV进行重新编译,事实证明完全没有问题。$ sudo apt-get install gnome-core-devel也可以使用如下命令只安装GTK+ 2.x:
$ sudo apt-get install libgtk2.0-dev或者
$ sudo apt-get install libgtk2.0*再执行如下命令,以用于在编译GTK程序时自动找出头文件及库文件位置:
$ sudo apt-get install pkg-config最后,使用如下命令查看GTK+ 2.x版本
$ 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所示,本人已经把这几个文件(压缩包)放在桌面上了。
$ tar zxvf cmake-2.8.8.tar.gz … $ cd cmake-2.8.8 … $ ./bootstrap …如果执行上面命令后出现如下错误,请执行命令“sudo apt-get install g++”安装C++编译器。
$ ./bootstrap --------------------------------------------- CMake 2.8.8, Copyright 2000-2011 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: /home/jiya/Desktop/cmake-2.8.8/Bootstrap.cmk/cmake_bootstrap.log ---------------------------------------------这个操作需要消耗的时间比较长,这里可以先喝杯茶继续等。
-- Configuring done -- Generating done -- Build files have been written to: /home/jiya/Desktop/cmake-2.8.8 --------------------------------------------- CMake has bootstrapped. Now run make. $ … $ make …同样的执行完这个操作后也要稍等片刻。
$ sudo make install …Step1.4 这时我们可以使用“cmake –version”命令来查看终端是否有关于cmake的版本信息。如果没有的话,我们就需要修改用户的PATH路径,把cmake路径加入用户环境变量,可以运行如下命令:
$ echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc注意:这里我们使用的是root用户修改的,因此只对root用户生效!如果其他用户也要使用cmake命令,再使用其他用户登录终端后修改用户环境变量。
$ cmake --version cmake version 2.8.8 $二、接下来我们来编译Opencv
$ tar -jxvf OpenCV-2.3.1a.tar.bz2 $ cd OpenCV-2.3.1 $ mkdir release $ cd release $Step2.2 进入release目录后,执行如下命令(注意这是一整条命令且最后有两点“..”),其中“CMAKE_INSTALL_PREFIX=/home/OpenCV-2.3.1a”表示当我们使用“make install”命令安装OpenCV的时候,会将相关文件拷贝到/home/OpenCV-2.3.1a目录下。
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV-2.3.1a -D BUILD_PYTHON_SUPPORT=ON ..执行上述命令后,release目录下会生产Makefile文件等,如图4所示:
$ make等待编译......
$ chmod +x QtSdk-offline-linux-x86-v1.2.1.run $ ./QtSdk-offline-linux-x86-v1.2.1.run接着,按着向导一步一步地安装Qt即可(一直单击“Next”按钮)。
$ echo "/opt/OpenCV-2.3.1a/lib " >> /etc/ld.so.confStep3.4 使用Qt IDE新建项目,依次选择“新建项目-其他项目-空的Qt项目”,单击“选择”,浏览到指定目录,依次单击“下一步”即可。
INCLUDEPATH += /opt/OpenCV-2.3.1a/include/ LIBS += `pkg-config opencv --cflags --libs`其中“LIBS += `pkg-config opencv --cflags --libs`”也可以使用如下形式:
LIBS += /opt/OpenCV-2.3.1a/lib/libopencv_calib3d.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_contrib.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_core.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_features2d.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_flann.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_gpu.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_highgui.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_imgproc.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_legacy.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_ml.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_objdetect.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_ts.so.2.3.1 \ /opt/OpenCV-2.3.1a/lib/libopencv_video.so.2.3.1 \新建源文件(*.cpp,,如本人新建的源文件的文件名为OpenCV.cpp),编写代码,构建-构建所有项目(Ctrl+Shift+B)、构建-运行(Ctrl+R)即可。
#include <opencv/highgui.h> int main( int argc, char** argv ) { IplImage* img = cvLoadImage( argv[1] ); cvNamedWindow( "OpenCV", CV_WINDOW_AUTOSIZE ); cvShowImage( "OpenCV", img ); cvWaitKey(0); cvReleaseImage( &img ); cvDestroyWindow( "OpenCV" ); return ( 0 ); }编译完成后,在可执行文件所在的目录执行./OpenCV lena\(1\).tiff,效果如图8所示:
#include <opencv/cv.h> #include <opencv/highgui.h> int main( int argc, char **argv ) { cvNamedWindow( "Video", CV_WINDOW_FULLSCREEN ); CvCapture *capture = cvCreateFileCapture( argv[ 1 ] ); IplImage *frame; while (1) { frame = cvQueryFrame( capture ); if ( !frame ) break; cvShowImage( "Video", frame ); char c = cvWaitKey( 33 ); if ( c == 27 ) break; } cvReleaseCapture( &capture ); cvDestroyWindow( "Video" ); return ( 0 ); }附录:
$ sudo apt-get install nautilus-open-terminal
然后注销下,即可看到!
2.如果无法更新或者安装软件,请使用如下命令:
$ sudo dpkg --configure -a参考链接:
http://115.com/file/becmjqxa# OpenCV-2.3.1a.tar.bz2
http://115.com/file/anc42qnb# OpenCV-2.4.0.tar.bz2
http://115.com/file/becmju89# cmake-2.8.8.tar.gz