使用OpenCV的常常需要使用其静态链接库(Staticlib),但是OpenCV 300只提供了vc11(VS2012),vc12(VS2015)的支持库,
因此如果要在VS2010上使用OPenCV 300的Staticlib,需要自行编译。
1.使用cmake 生成OpenCV 300的VS2010工程
步骤:
(1)使用cmake选择source code路径,路径为opencv/source
(2)选择生成工程的路径
(3)点击Configure按钮,选择功能
(4)因为OpenCV默认生成DLL,所以此时需要关闭一些功能,具体需要关闭的功能如下表(在只使用staticlib的前提下)
编号
|
功能
|
描述
|
1
|
BUILD_SHARED_LIBS |
保留则生成DLL
|
2
|
WITH_IPP |
|
3
| WITH_WEBP |
|
4 | WITH_OPENEXR |
|
(5)提示Configure done后,选择Generate
2.编译OpenCV 300 Release,Debug
步骤:
(1)直接使用VS2010打开工程,可以看到所有代码
(2)选择release,debug,并分别编译
(3)将生成的staticlib放入调用路径
3.在需要OpenCV图像算法支持的工程中引入相应的图像库
步骤:
(1)在代码中添加.h和.Lib文件
#ifdef _DEBUG
#pragma comment( lib, "vfw32.lib" )
#pragma comment( lib, "comctl32.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/ippicvmt.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/IlmImfd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libjasperd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libjpegd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libpngd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libtiffd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libwebpd.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/zlibd.lib" )
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_calib3d300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_core300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_features2d300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_flann300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_highgui300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgcodecs300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgproc300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_ml300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_objdetect300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_photo300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_shape300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgproc300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_video300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_videoio300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_videostab300d.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_hal300d.lib")
#else
#pragma comment( lib, "vfw32.lib" )
#pragma comment( lib, "comctl32.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/ippicvmt.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/IlmImf.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libjasper.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libjpeg.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libpng.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libtiff.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/libwebp.lib" )
#pragma comment( lib, "../../../Lib/OpenCV300_Mine/staticlib/zlib.lib" )
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_calib3d300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_core300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_features2d300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_flann300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_highgui300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgcodecs300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgproc300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_ml300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_objdetect300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_photo300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_shape300.lib")
//#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_stitching300.lib")
//#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_superres300.lib")
//#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_ts300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_imgproc300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_video300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_videoio300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_videostab300.lib")
#pragma comment(lib, "../../../Lib/OpenCV300_Mine/staticlib/opencv_hal300.lib")
#endif
|
(2)在属性-》C++-》附加路径添加
..\..\Lib\OpenCV300\Include\opencv2
|
..\..\Lib\OpenCV300\Include
|
4.在需要OpenCV图像算法支持的工程中修改属性
Debug
Release
参考资料
1.《安装opencv3.0.0与配置Visual studio 2008》
http://jingyan.baidu.com/article/b907e627cb97cd46e7891c3d.html
2.《
【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译》
http://blog.youkuaiyun.com/poem_qianmo/article/details/21974023
3.
《openCV 中cvCopyImage,cvCopyMat和cvCloneImage,cvCloneMat的区别》
https://absorbguo.blog.ustc.edu.cn/?p=61
6.《
iplimage* 转为mat opencv3.0》
http://blog.sina.com.cn/s/blog_500bd63c0102vsf5.html
7.《
VS2012中使用OpenCV-3.0.0的动态链接库和静态链接库
》(静态库调用讲得很清楚)
8.《
OpenCV vs2010静态调用》
11.《
VS如何设置OpenCV静态编译
》