opencv编译以及测试
opencv下载地址:http://www.opencv.org.cn/index.php/Download
最新版本是:Version 2.3.1,下载地址:http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe
下载好了之后把它解压出来,例如我解压到:F:\opencv
由于不是windows下的vs项目,需要使用CMAKE转换一下,cmake下载地址:http://www.cmake.org/cmake/resources/software.html
我下载的是:
Windows (Win32 Installer) |
安装完毕后运行cmake,并在“Where is the source code”中设置opencv的目录,例如我的是:F:\opencv,
然后设置你想要生成vs工程项目的目录“Where to build the binaries”,我这里设置为F:\opencv\vs2010,如图所示:
然后点击底部的“Configure”按钮,第一次会出现很多红色,再点一次“Configure”按钮直到没有红色为止,说明配置正确了。
中间弹出让你选择编译器的配置的时候选择“visual studio 10”即可,最后点“Generate”按钮生成工程项目文件,最后成功生成的vs2010项目如图所示:
打开OpenCV.sln,其实我们不用全部编译的,因为下载的opencv包里面解压出来后的目录F:\opencv\build\x86\vc10\staticlib中已经有静态编译出来的lib文件了。
唯一没有的是三方的库,我们一律按照静态编译这几个三方库: libjasper,libjpeg,libpng,libtiff,zlib,注意这几个项目的配置属性中代码生成都要设置成MTD(MT),
不然链接的时候会有问题。成功编译后,三方库生成在F:\opencv\vs2010\3rdparty\lib\Debug目录下,我们把这几个lib文件都复制到F:\opencv\build\x86\vc10\staticlib目录下。
新建一个opencvtest项目,添加代码:
// opencvtest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
using namespace cv;
#pragma comment(lib,"libjasperd.lib")
#pragma comment(lib,"libpngd.lib")
#pragma comment(lib,"libjpegd.lib")
#pragma comment(lib,"zlibd.lib")
#pragma comment(lib,"libtiffd.lib")
#pragma comment(lib,"comctl32.lib") //for CreateToolbarEx
int _tmain(int argc, _TCHAR* argv[])
{
Mat img = imread("test.jpg");
if(!img.data)
return -1;
namedWindow("flower", CV_WINDOW_AUTOSIZE);
imshow("flower", img);
waitKey();
return 0;
}
设置项目的VC++项目包含目录:F:\opencv\build\include\opencv;F:\opencv\build\include;$(IncludePath)
设置库包含目录:F:\opencv\build\x86\vc10\staticlib;$(LibraryPath)
因为我们把三方库的lib都复制到了F:\opencv\build\x86\vc10\staticlib目录下,所以使用时直接:
#pragma comment(lib,"libjasperd.lib")
#pragma comment(lib,"libpngd.lib")
#pragma comment(lib,"libjpegd.lib")
#pragma comment(lib,"zlibd.lib")
#pragma comment(lib,"libtiffd.lib")
其中由于opencv库中引用了函数CreateToolbarEx,为此我们还要链comctl32.lib库:
#pragma comment(lib,"comctl32.lib") //for CreateToolbarEx
程序运行效果截图: