在Ubuntu14.04下64位机上Qt5.6.0中调用opencv2和opencv3库的注意事项

来源:互联网 发布:11.3非农数据最新消息 编辑:程序博客网 时间:2024/05/18 01:44

最近在Qt5.6.0上编写基于opencv库的程序的时候,配置没有问题,编写CMakeLists.txt文件编译输出运行没有问题,但是在Qt5.6.0上总是出现qmake的时候没有错误,但是运行的时候,就会出错,网上找了很久,但都不是我想要的答案,后来,不知道在哪个博客上看到说Qt下通过opencv引用资源需要绝对路径,所以我通过复制文件的绝对路径,发现问题解决了。当然,这是在qt5.6.0+opencv2.4.13上遇到的一个坑。

第二天,安装opencv3的时候,测试代码的时候,又遇到问题,发现编译运行出现如下的错误:

:-1: error: main.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'/usr/local/opencv3/lib/libopencv_imgcodecs.so.3.1:-1: error: error adding symbols: DSO missing from command line:-1: error: collect2: error: ld returned 1 exit status

这个问题也是比较头疼,查了好久,终于查到,发现是因为opencv3中在opencv2的基础上还需要添加如下的一条:

/usr/local/opencv3/lib/libopencv_imgcodecs.so

因此,在Qt5中引入opencv2和opencv3的头文件和库文件的时候,其内容分别是:
opencv2:

INCLUDEPATH += /usr/local/include \                /usr/local/include/opencv \                /usr/local/include/opencv2LIBS += /usr/local/lib/libopencv_highgui.so \        /usr/local/lib/libopencv_core.so    \        /usr/local/lib/libopencv_imgproc.so        

opencv3:

INCLUDEPATH += /usr/local/opencv3/include \                /usr/local/opencv3/include/opencv \                /usr/local/opencv3/include/opencv2LIBS += /usr/local/opencv3/lib/libopencv_highgui.so \        /usr/local/opencv3/lib/libopencv_core.so    \        /usr/local/opencv3/lib/libopencv_imgproc.so \    /usr/local/opencv3/lib/libopencv_imgcodecs.so
用于测试的完整代码:
#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int main(){        namedWindow( "src");        Mat img = imread( "/home/lq/opencv2_project/opencv3-test/lena.jpeg" );//注意:这里图片的读取需要绝对路径,否则出错        if(!img.data) {            cout<<"file not fount"<<endl;            return 1;        }        else {            imshow( "src", img );            waitKey(0);            return 0;        }}
0 0
原创粉丝点击