在Qt中开发基于OpenCV的应用时,需要配置对应函数库到环境变量,这时候我们需要使用到qmake能够识别的变量来指定环境变量。
INCLUDEPATH: 用于指定搜索头文件到文件夹路径。
LIBS: 包含链接时的库文件列表。使用-L来指定文件夹路径,-l来指定库的名称。
而这些配置,我们需要写入到对应到工程文件(*.pro)当中,可以有两种写法。
第一种:直接指定包含到库文件名称。
INCLUDEPATH += /usr/local/include/opencv2/ LIBS += /usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_imgproc.so
这种方法必须指定整个文件到完整路径及名称,编写起来相对麻烦一点。
第二种:指定库文件路径和库名称。
INCLUDEPATH += /usr/local/include/opencv2/
LIBS += -L/usr/local/lib/ \
-lopencv_core\
-lopencv_highgui\
-lopencv_imgproc
这里只需要先声明库文件的位置,然后使用-l参数来添加库名称即可。
2014-12-10补充:
以上介绍的方法是Linux上或者是Window下MinGW版本的Qt环境下使用方法,如果你使用的是MSVC编译器的Qt环境,那么在编译OpenCV库是会在库文件后面添加一个版本号后缀,因此在使用这类环境进行OpenCV应用程序开发的时候,你就需要在以上基础上做稍微的修改,以我在Windows 7 64位平台上使用VS2012编译的OpenCV 2.4.9为例,在*pro中配置OpenCV库环境支持时使用的库添加命令代码如下:
#for OpenCV Lib
INCLUDEPATH += C:/opencv/install/include/
LIBS += -LC:/opencv/install/x64/vc11/lib/ \
-lopencv_core249 \
-lopencv_highgui249 \
-lopencv_imgproc249
我在Mac上运行以上代码时,提示以下错误:
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
解决办法是将“”目录下的对应动态链接库文件创建软连接到“/usr/local/lib”目录下:
$ pwd
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources
$ sudo ln -sf libJPEG.dylib /usr/local/lib/libJPEG.dylib
$ sudo ln -sf libPng.dylib /usr/local/lib/libPng.dylib
$ sudo ln -sf libTIFF.dylib /usr/local/lib/libTIFF.dylib