您的位置:首页 > 运维架构

opencv 1.0 编译过程中的一些问题的解决记

2012-07-01 18:55 399 查看
一些项目可能最早使用了opencv库,其代码会用到一些opencv中的接口和它提供的一些xml文件,为了让这些项目的代码能重新工作,需要安装opencv。考虑到写代码时用到的是opencv1.0的库,所以本着“可能会出错的地方一定会出错”的信念,还是下载了opencv1.0的代码。opencv1.0的代码还没有引入cmake,所以安装就是传统的./configure; make; make install。

过程是容易,但是也没那么容易。编译过程中尽想着怎么去解决问题了,所以把问题给忘了,先且留下编译的过程和其中想到的一些注意点。

1, 下载opencv 1.0的代码,这点自然不在话下;

2, sudo yum install gtk2-devel 如果没有安装该库,则在整个过程安装结束后,运行代码显示结果时碰到一个温柔的提示,大意是rebuild the library with ... gtk2...。如果这个时候,回去./configure --enable-gtk, make , make install并且确认./configure结果中gtk支持之后,再来运行结果,依然会报该错误!解决方法是把安装目下的lib inculude share目录都删掉,再去./configure --enable-gtk && make && make install (运算符号:&& 表示当且仅当前面的命令成功时候执行该命令,同理 || 表示仅当前面的命令失败之后执行该命令)

3, sudo yum install libv4l-devel 这位解决CAM4l的问题准备库和头文件;

4, 可选,根据需要安装库,比如: sudo yum install libjpeg-devel, sudo yum install libtiff-devel;

5,修改cxmisc.h 中第133行,#elif 改为#else, 如果不改,make时会报不能为空之类的错误,编译语法错误容易改;

6,修改./otherlibs/highgui/cvcap_v4l:cpp中第208行:改为#include <libv4l.h>

  修改第219行,在#include <linux/videodev2.h>前增加#include <libv4l2.h>

7,./configure --prefix=<install direcotry> --enable-gtk

8,修改cvconfig.h,最后增加#define CAMV4L,第6 和 第8 条解决了make时报undefine reference to XXXcav4XXX之类的错误。

9,make

10, make install

补充:

“可能会出问题的地方一定会出问题”果然应验,2.4 opencv和1.0 opencv有些不同,网上提到的一个用opencv作face detection的时候因版本不同导致需要编写略微不同的代码的错误,例子如下:

opencv1.0中写法:

CvHaarClassifierCascade* pCascade = 0;  // the face detector
const char* file ="C:\OpenCV2.3\opencv\data\haarcascades\haarcascade_frontalface_alt_tree.xml" ;
pCascade = (CvHaarClassifierCascade*) cvLoad(file , NULL, NULL, NULL);
if (!pCascade)   {
exit(-1);    // unable to load xml
}


opencv2.4中写法:

CascadeClassifier face_cascade;
if (!face_cascade.load( file) ) {
cout << "Couldn't load face_cascade" << endl;
exit(-1);
}

cout << "Loaded face_cascade" << endl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐