初始安装好opencv2.4.1后测试时出现以下问题:(下面第一行为测试语句,系统为Ubuntu12.04)
----想不通的是明明已经安装了GTK+2.x这些东东
~$./DisplayImage lena.jpg
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/aborn/software/OpenCV-2.4.1/modules/highgui/src/window.cpp, line 598
terminate called after throwing an instance of 'cv::Exception'
what(): /home/aborn/software/OpenCV-2.4.1/modules/highgui/src/window.cpp:598: error: (-2) 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 function cvNamedWindow
上网一查,发现有人也遇到过这个问题,如这个 csdn-topic 还有 yahoo的gruop-topic
最后在这个地方找到了解释,点击此处。
简单的解释就是你的GTK+2.x要先于OpenCV安装,所以它给的解决方法是You should remove the current installation of opencv from your system; rebuild your opencv lib after installing gtk dev lib in the correct path; and reinstall the compiled opencv lib.
我按照这个方法,又重新用cmake-gui make sudo make install 重新安装了一遍,最后成功,如下图:
/
版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。
博客地址:http://blog.csdn.net/shuxiao9058
原始作者:季亚
前言:看过本人博客的朋友都知道,我这个人还是比较青睐于红帽子系统的,目前经常使用的Linux是rhel 6.2和Fedora 15,毕竟红帽是那么的稳定与方便,只不过资源不太好找。在编译Learning OpenCV第二章第二个视频例子的时候却不能运行,我估摸着可能是解码器的问题,听朋友说Ubuntu比较方便,于是便下载安装,并又再对OpenCV进行重新编译,事实证明完全没有问题。
还有,Linux下源码我只在Ubuntu 11.10/12.04和rhel 6.2下编译成功了,并且没有任何问题,只不过视频播放在rhel下比较难解决,不像ubuntu直接更新插件就可以了。 注意: 本文是以OpenCV-2.3.1介绍编译配置方法的,有关OpenCV版本的地方需要修改。
首先要确保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下编译配置的)。
即执行下面命令,注意在安装软件之前要配置好网络(VM下网络配置可参考本人博文: VMware WorkStation的三种网络连接方式):
- $ sudo apt-get install gnome-core-devel
- $ sudo apt-get install libgtk2.0-dev
- $ sudo apt-get install libgtk2.0*
- $ sudo apt-get install pkg-config
- $ pkg-config --modversion gtk+-2.0
Step1.1 具体操作如下:
- $ tar zxvf cmake-2.8.8.tar.gz
- …
- $ cd cmake-2.8.8
- …
- $ ./bootstrap
- …
- $ ./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
- ---------------------------------------------
Step1.2 完成后,会看到提示“CMake has bootstrapped. Now run make.”,然后执行命令:
- -- Configuring done
- -- Generating done
- -- Build files have been written to: /home/jiya/Desktop/cmake-2.8.8
- ---------------------------------------------
- CMake has bootstrapped. Now run make.
- $
- …
- $ make
- …
Step1.3 然后使用如下命令安装到系统(此时若无权限,请使用root进行操作,可以使用“sudo su”命令切换root用户):
- $ sudo make install
- …
- $ echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
也可以修改~/.bashrc文件,如下修改在文件最后添加上面的代码。
注意这里与windows下面的环境变量不同的是环境变量之间是用冒号“:”分隔开的,而非分号“;”,重启终端使用户变量生效。
测试:重新登录系统(不必重启机器,开始->logout 或者重新打开终端即可),使以上设置生效,在命令行输入cmake --version,会出现如下信息,这说明cmake环境已经成功配置并可以正常使用了。
- $ cmake --version
- cmake version 2.8.8
- $
Step2.1 返回到桌面,使用如下命令:
- $ tar -jxvf OpenCV-2.3.1a.tar.bz2
- $ cd OpenCV-2.3.1
- $ mkdir release
- $ cd release
- $
- $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV-2.3.1a -D BUILD_PYTHON_SUPPORT=ON ..
- $ make
Step2.4 编译完成后运行“sudo make install”命令,会在/home/OpenCV-2.3.1a目录下生成opencv相关目录及文件,包括bin、lib、include等,如图5所示。
Step3.1 下载完成后,同样的拷贝到Ubuntu桌面上。执行如下命令:
- $ chmod +x QtSdk-offline-linux-x86-v1.2.1.run
- $ ./QtSdk-offline-linux-x86-v1.2.1.run
下面我们配置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所示)。
- $ echo "/opt/OpenCV-2.3.1a/lib " >> /etc/ld.so.conf
在项目文件(*.pro,如本人新建项目的名称为OpenCV,即需要修改OpenCV.pro)中添加如下内容:
- INCLUDEPATH += /opt/OpenCV-2.3.1a/include/
- 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 \
测试例子(源码):
- #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 );
- }
- #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 );
- }
附录:
1. Ubuntu中打开终端的方法:
法1. (当然是笨方法了),依次打开(应用程序-附件-终端),如果闲的麻烦,可以直接把它添加面板,这样也方便点。
法2.首先按住Alt,然后按一下F2,出来一个运行框,在里面输入 gnome-terminal即可运行。在这个运行框里,可以执 行很多命令,想当于Windows的[运行](Windows+R键),不过很难记住。
法3. 可以把终端窗口打开放在鼠标右键,效果是在桌面或文件夹内的空白处右键点击,将出现“从终端打开”的快捷方式。那个需要使用一个软件。安装很简单,打开终端,在里面输入以下命令:
- $ sudo apt-get install nautilus-open-terminal
然后注销下,即可看到!
2.如果无法更新或者安装软件,请使用如下命令:
- $ sudo dpkg --configure -a
参考链接:
http://opencv-extension-library.googlecode.com/svn/trunk/QtOpenCV/
http://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation
http://qt.nokia.com/
http://ffmpeg.org/
http://www.cnblogs.com/niocai/archive/2011/07/15/2107472.html
http://blog.163.com/kingore@126/blog/static/8540871920113382233164/
附件下载:
Ubuntu系统光盘:
http://115.com/file/an0mpuer# ubuntu-11.10-desktop-i386.iso
http://115.com/file/e78j6ym2# ubuntu-12.04-desktop-i386.iso
编译后的文件:
http://115.com/file/an0m24z1# QtSdk-offline-linux-x86-v1.2.1.run
http://115.com/file/c2ap6pm8# OpenCV-2.3.1a(ubuntu-11.10).tar.bz2
http://115.com/file/e78jirjm# OpenCV-2.3.1a(ubuntu-12.04).tar.bz2
http://115.com/file/e78bxqn2# OpenCV-2.3.1a(rhel-6.2).tar.gz
http://115.com/file/e7jwbi6p# OpenCV-2.4.0(ubuntu-12.04).tar.bz2
源代码:
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