您的位置:首页 > 运维架构

Windows配置Codeblocks+MingGW+OpenCV并测试边缘提取

2015-03-20 10:23 344 查看
本文主要参考了:
http://blog.csdn.net/celte/article/details/9719643
http://kevinhughes.ca/tutorials/opencv-install-on-windows-with-codeblocks-and-mingw/

我看了好几个教程都用codeblocks10.05,这是一个很老的版本了(也说明这两年大家没有遇到什么问题吧……)。这里我用了带MinGW的13.12。并且他们都写的是,直接解压OpenCV,然后就找到路径”./build/x86/mingw”,事实上我的x86目录下只有v10/11/12三个目录,都是为VS中配置准备的,并没有mingw。上面的第二个链接给出了很好的解释:需要我们自己Cmake。Cmake的过程基本可以参考上文,但是注意souce code处不是./opencv,而是./opencv/source,该目录下才有CMakeList.txt。当然这可能与我使用的版本和作者不同有关,我的opencv是2.4.9,大家请自己判断位置。关键就是找到有CMakeList.txt的目录。

目标目录就设为./opencv/build/x86/mingw即可。然后点configure。

稍等片刻,configure结束,进入目录,操作如下图。注意ming32-make.exe的所在位置。作者说直接输入ming32-make,那么应该是先前设置了系统环境变量(Path中添加),我就直接用绝对路径了。接下来就开始make,等待……

【如果你的MinGW是自己后配的,不是随Codeblocks一起安装的,MinGW路径请按自己电脑上的来】





然后按照教程配置即可编译。

编译可通过,但运行报错:



参考:/article/5832319.html

但是复制一个dll,发现还报错(libopencv_highgui249.dll……)。于是我干脆把bin下的所有dll全拷贝到System32下去了。然后就没有问题了。

测试代码(边缘提取):

#include"opencv2/imgproc/imgproc.hpp"
#include"opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
using namespace cv;

int main(){

Mat src, src_gray;
Mat grad;
char* window_name = "求解梯度";
int scale = 1;
int delta = 0;
int ddepth = CV_16S;

int c;

src = imread("logo.png");

if( !src.data ){
return -1;
}

//高斯模糊
GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );

//转成灰度图
cvtColor( src, src_gray, CV_RGB2GRAY );

namedWindow( window_name, CV_WINDOW_AUTOSIZE );

Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;

Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT);
convertScaleAbs( grad_x, abs_grad_x );

Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);
convertScaleAbs( grad_y, abs_grad_y );

addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );

imshow( window_name, grad );

waitKey(0);

return 0;
}
运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: