opencv官网上的window下载包里不含适合codeblocks的二进制文件,只有VS的,所以只有自己动手了。
VS与codeblocks的最大区别就在于用的默认编译器不一样,opencv官网上给的是用VC编的,codeblocks直接用会报缺少dll文件,一查都是VC的。所以要用mingw自己编译一遍。
所以问题是用mingw编译opencv源码得到二进制文件。
cmake配置
这一过程要用到cmake。其界面如下:
点击configure,选择codeblocks-mingw makefiles,第一次会显示四种选项,选第一种
codeblocks必须安装,而且必须安装了编译器。绿色版的cmake会找不到编译器,因为它是通过注册表查找的。之前用绿色版的报如下错误:
Cmake was unable to find a build program corresponding to “MinGW Makefiles”, CMAKE_MAKE_PROGRAM” is not set, You probably need to select a different build tool.
Configure通过后会显示:
下面就要选择配置cmake选项了。根据网络经验,mingw是不支持cuda的,所以和cuda相关的选项都要去掉,另外opencv3.0不支持ipp,所以也要去掉。所以
再次点击Configure,
变白了表示通过,再点generate,
codeblocks(mingw)编译
下面轮到codeblocks上场了,打开cmake gui最开始设置的where to build the binaries,在gui的最上面,打开这个地址,找到OpenCV.cbp,就是这个
这是个codeblocks的工程文件,就是把所有文件链接到一起的那东西,双击在codeblocks里打开他,
然后,戳一下这里就好了。
接着就是漫长的等待了,酷睿双核大概需要一个多小时。
编译完后,看看这里和这里
如果这两个夹子下面有货而且很多,那么恭喜你成功了,
工程配置
下面就是应用了,还是codeblocks,新建一个工程,工程名右键->build options
1)所要引用的库有哪些(linker settings)
加入所有lib文件夹下的库
2)头文件搜索路径(search directories->complier)
3)二进制文件(不仅仅是库文件还有exe )的搜索路径(search directories->linker)
好,所有配置工作完成了,可以正式开始编码了。
从网上找了一个例子,链接
需要注意的是,cvLoadImage ("E:/CodeLink/Init/bin/Debug/test.png", 1)
里面的路径需要用/而不是windows里的\。
#include <cv.h>
#include <highgui.h>
using namespace std;
int main()
{
IplImage* src = cvLoadImage ("E:/CodeLink/Init/bin/Debug/test.png", 1);
IplImage* dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_32F, 1);
IplImage* canny = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 1);
cvCvtColor (src, canny, CV_RGB2GRAY);
cvCanny (canny, canny, 100, 200, 3);
cvDistTransform (canny, dst, 3, 3);
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
cvNamedWindow ("dist", 1);
cvShowImage ("dist", canny);
cvWaitKey (0);
cvReleaseImage (&src);
cvReleaseImage (&canny);
cvReleaseImage (&dst);
return 0;
}
编译之前先看看头文件是否能打开,各个函数是否都可以找到定义,如果都可以,那么配置无错,可以编译了。
看看结果,左侧是原图,后侧是处理后的: