CentOS7 linux中,在Qt中配置OpenCV

前提:在Qt中使用OpenCV之前,我已经安装好OpenCV,在bash shell里可以使用了。

在shell里面使用的时候,附加命令 `pkg-config opencv --cflags --libs` ,也就是 g++ test_opencv.cpp -o test `pkg-config opencv --cflags --libs`


查了命令`pkg-config opencv --cflags --libs`的意思,大致是表示,借助opencv.pc这个文件,指引出头文件和库文件的路径。

可以用echo `pkg-config opencv --cflags --libs` 命令看看他的内容:

-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl
查了几个小时后,才明白有两种方案可以在Qt中配置OpenCV


方案一:

在Qt项目的.pro文件中加入两项:

1 指示头文件的位置

INCLUDEPATH += -I/usr/local/include/opencv -I/usr/local/include
2 指示库文件的位置

LIBS += -L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl
就是把`pkg-config opencv --cflags --libs`结果的前半部分和后半部分,分别写道.pro文件。


方案二:

同样在Qt的.pro文件中,加入两行:

CONFIG += link_pkgconfig
PKGCONFIG += opencv

就可以编译通过了OpenCV项目了。


总结:查询类似问题的解决方法,不能只从现象去查,最好还是理解原理,这样看着好像是要费时间,其实总体是省事的。

我开始查的是“如何在linux centos,Qt中配置OpenCV”,找到几个在Ubuntu下配置的方法,但是他们的头文件路径和我不同,库文件也才两三个,而且格式是全路径:

LIBS += /usr/local/lib/libopencv_highgui.so \
        /usr/local/lib/libopencv_core.so    \
        /usr/local/lib/libopencv_imgproc.so
我要是敲全路径,肯定累死。

于是乎,想到能不能在Qt中,某个位置也加上`pkg-config opencv --cflags --libs`。试了半天也没用。

最后试了各种方法都行不通,才想到应该了解这个指令的含义。

结果,查了两下,就知道怎么弄了。







猜你喜欢

转载自blog.csdn.net/laowulong350/article/details/79029784