(1)搭建好VC2010 + Qt5.4.2(MSVC2010) + QtCreator3.4.1 的集成开发环境;
(2)下载并运行OpenCV2.4.10的安装程程序,安装程序会将OpenCV需要的动态库,静态库,头文件等解压到安装目录中。
我安装在D:/OpenCV2.4.10文件夹下面;
(3)如下图所示,在QtCreator中新建一个纯C++工程
(4)在.pro工程文件中输入OpenCV的头文件和依赖的库文件,我的.pro工程文件最终结果如下:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += D:/OpenCV2.4.10/opencv/build/include
LIBS += -LD:/OpenCV2.4.10/opencv/build/x86/vc10/bin \
-LD:/OpenCV2.4.10/opencv/build/x86/vc10/lib \
-lopencv_calib3d2410 \
-lopencv_contrib2410 \
-lopencv_core2410 \
-lopencv_features2d2410 \
# -lopencv_ffmpeg2410 \ ##如果加上编译时会报错找不到opencv_ffmpeg2410.lib,去掉后编译正确。
-lopencv_flann2410 \
-lopencv_gpu2410 \
-lopencv_highgui2410 \
-lopencv_imgproc2410 \
-lopencv_legacy2410 \
-lopencv_ml2410 \
-lopencv_nonfree2410 \
-lopencv_objdetect2410 \
-lopencv_ocl2410 \
-lopencv_photo2410 \
-lopencv_stitching2410 \
-lopencv_superres2410 \
-lopencv_video2410 \
-lopencv_videostab2410
SOURCES += main.cpp
include(deployment.pri)
qtcAddDeployment()
注意:虽然使用动态库编译,但是要将 -LD:/OpenCV2.4.10/opencv/build/x86/vc10/lib这行加上,否则编译时找不到符号,原因是“动态库隐式调用”机制。
(5)在main.cpp中输入测试代码,我的main.cpp的最终结果如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("E:/desktop.jpg");
if(img.empty())
{
std::cout<<"error"<<std::endl;
return 0;
}
imshow(string("opencv test"), img);
waitKey();
return 0;
}
(6)编译运行,最终的现象如下图所示:
扩展资料:
动态库隐式调用
动态库显式调用和隐式调用两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样的。显式调用麻烦了点,但可以没有相应的lib库;隐式调用,使用起来比较简单,有函数的声明就可以了,但必须有lib库。