我已经通过this指令安装了OpenCV。
我在使用OpenCV时通过cmake构建代码 - 这一切都没问题。 但现在我正试图从QT使用OpenCV,我得到这样的错误:
error: undefined reference to `cvCreateCameraCapture'
OpenCV中所有函数的错误相同。
我尝试在.pro中添加此代码:
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib
LIBS += -lopencv_core
LIBS += -lopencv_imgproc
LIBS += -lopencv_highgui
LIBS += -lopencv_ml
LIBS += -lopencv_video
LIBS += -lopencv_features2d
LIBS += -lopencv_calib3d
LIBS += -lopencv_objdetect
LIBS += -lopencv_contrib
LIBS += -lopencv_legacy
LIBS += -lopencv_flann
但这不起作用。
目录/usr/local/include/opencv2
存在但不是空的。
那么,怎么了?
答案 0 :(得分:2)
将此添加到.pro文件:
LIBS += "pkg-config --libs opencv"
答案 1 :(得分:0)
您收到链接器错误,因此编译正确。为了正确添加链接库目录和链接库到.pro文件,您应该在控制台发出如下命令:
用户名@ Linux的主机:〜> echo $(pkg-config --libs opencv)
然后,您应该阅读一长串的库,如下所示:
-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 /usr/lib64/libXext.so / usr / lib64 / libX11.so /usr/lib64/libICE.so /usr/lib64/libSM.so /usr/lib64/libGL.so /usr/lib64/libGLU.so -lrt -lpthread -lm -ldl
使用所有库和选项获取这个长字符串序列后,将其插入.pro文件中,如下所示:
LIBS + = -lopencv_calib3d -l ......插入如上所示的所有字符串!
保存.pro文件,重新运行qmake并再次运行make。链接错误应该已经消失。
如果问题没有消失或显示其他链接错误,请在opencv编译目录(和子目录)中找到扩展名为.pc的所有文件,并将它们以root用户身份复制到目录/ usr / share / pkgconfig /中
然后再次发出上面的命令,并在.pro文件中插入正确的字符串序列,用于标识LIBS + =行中的库选项并保存.pro文件,重新运行qmake并重新运行make。 / p>