最近学习QT及OpenCV的使用,所以尝试下载了OpenCV,并且按照网上教程编译。首先我下载的是OpenCV2.2编译的时候出现了好多问题。先说一下我的编译方法参考http://blog.csdn.net/moc062066/article/details/6617968。不过这里我在cmake-gui中取消with_tiff与with_FFMPEG 。
编译是好多错误,Opencv2.2与OpenCV出现错误差不多:
1、error: ‘ptrdiff_t’ does not name a type
解决:加入include目录下的cxcore.hpp 上面加上命名空间 using std::ptrdiff_t;
2、OpenCV: undefined reference to `cvCreateCameraCapture_V4L(int)
解决:http://blog.chinaunix.net/uid-23381466-id-3828667.html
3、错误/opt/OpenCV-2.1.0/tests/ml/src/slmltests.cpp:104:20: error: ‘unlink’ was not declared in this scope
解决:在每个错误文件上加上头文件:#include <unistd.h>
后来转战到OpenCV2.4.2,这个版本的编译就简单多了,按照之前的办法,我在cmake-gui中取消with_tiff与with_FFMPEG。
在Qt中使用OpenCV是需要添加头文件及库路径,比如我是放在/usr/local/include /usr/local/lib这两个路径下,则在工程的pro文件中添加如下内容:
INCLUDEPATH += /usr/local/include/opencv \
/usr/local/include/opencv2
LIBS += /usr/local/lib/lib*
注意,库没有添加成功的话会出现很多如下错误:
cameradialog.cpp:(.text+0x15):对‘vtable for CameraDialog’未定义的引用
cameradialog.cpp:(.text+0x28):对‘cvReleaseCapture’未定义的引用
cameradialog.o:在函数‘CameraDialog::CameraDialog(QWidget*)’中:
cameradialog.cpp:(.text+0xcb):对‘vtable for CameraDialog’未定义的引用
cameradialog.cpp:(.text+0xd2):对‘vtable for CameraDialog’未定义的引用
cameradialog.cpp:(.text+0x2e5):对‘cvCreateCameraCapture’未定义的引用