转载自->这里
设置opencv SDK解压目录,点击Extract后解压
我是习惯于解压到这个位置的。
解压过程如上图。
2、 文件目录介绍
解压后会在目录下生成opencv的文件夹
在opencv文件夹下有build和sources两个文件夹,build是SDK 包,sources是源码包(里面也有opencv使用例子源码)
在build文件夹下include是C&C++头文件所在文件夹;doc是文档文件夹;java是java开发的库文件夹;python是python开发库文件夹;x64和X86是已编译好的C&C++的64位和32位库文件夹,在它里面有vc10、vc11、vc12 三个文件夹,分别对应VC++2010、VC++2012和VC++2013。
因不同版本VC++生成的库文件所需的运行时不同,因此配置VC++工程时需要选择相对应的二进制库文件。在VC XX文件夹下bin文件夹是公用的动态链接库,在系统环境变量里配置后,所以opencv工程都能共享他们;lib文件夹是动态库隐式调用所需的静态链接文件;staticlib文件夹是静态链接库,需要生成不依赖动态库的程序就是用它们。
3、 设置环境变量
“开始菜单”-> “控制面板”->“系统”或在“计算机”上右键选“属性”打开系统设置窗口 选择“高级系统设置”打开“系统属性”窗口
选择“高级选项卡“,点击“环境变量”按钮打开“环境变量”窗口
在系统变量里找到Path变量,在Path中添加值SDK中的bin目录。
本人解压时设置的目录是D:\Program Files,用到是32位库,VC++用的是2013,因此添加到bin目录为
D:\Program Files\opencv\build\x86\vc12\bin。
在用户变量里,新建一个opencv的变量值为
D:\Program Files\opencv\build(根据解压目录)
PATH里增加(注:中间加;隔开,是英文状态下的)
D:\Program Files\opencv\build\x86\vc12\bin
注:环境变量配置后,需重启系统才能生效。
4、 VC++工程配置
新建一个项目(这个应该都会吧)
然后打开视图->属性管理器
双击标注出的地方,弹出一个属性页
先选择VC++目录
将可执行文件目录
点击右边,选择编辑
新建一个位置
本人输入的是(如果不确定,就点击右边的省略号选择文件夹)
D:\Program Files\opencv\build\x86\vc12\bin
然后是包含目录
差不多一样
本人输入的是(如果不确定,就点击右边的省略号选择文件夹)
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv2
D:\Program Files\opencv\build\include\opencv
下一个是库目录(如果不确定,就点击右边的省略号选择文件夹)
本人输入的是(如果不确定,就点击右边的省略号选择文件夹)
D:\Program Files\opencv\build\x86\vc12\lib
下一步就是附加依赖项的配置了
输入下面的链接库名
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
注:唯一的区别是Debug版用到的dll和lib文件都有后缀d,Release版使用的不带d。配置Release的附加依赖项时别忘了把d删掉。
若使用opencv3.X,则只需要在依赖项里加入
opencv_world330d.lib
5、 测试环节
分形例程
#include <cv.h>
#include <highgui.h>
#include <cxcore.h> IplImage* fractal;
IplImage* fcopy;//用来画矩形
int width = ;//图像宽和高
int height = ;
double XMax = 2.5;//复平面的最大坐标
double XMin = -2.5;
double YMax = 2.5;
double YMin = -2.5; #define MAX_COLOR 256//用来记录配色
int B[MAX_COLOR];
int G[MAX_COLOR];
int R[MAX_COLOR]; struct Complex//复数
{
double real;
double img;
}; //初始化图片彩色像素库
void initColor()//虽然写的是BGR,但是这里是当作HSV来初始化的,图片绘制完成后转BGR
{
for (int i = ; i < MAX_COLOR; i++)
{
B[i] = i * % ;
G[i] = 0.7 * 255.0;
R[i] = 255.0 * (1.0 - i / 255.0 * i / 255.0 / 1.2);
}
}
//绘制分形图
void drawPic()
{
double deltaX = (XMax - XMin) / width;
double deltaY = (YMax - YMin) / height;
int max_iterations = ;//最大迭代次数
double max_size = 4.0;
for (int row = ; row < height; row++)
{
for (int col = ; col < width; col++)
{
int color = ;
Complex c, z;
//z.real = 0;//这里是Mandelbrot集,下面被注释掉的是Julia集
//z.img = 0;
//c.real = XMin + col * deltaX;
//c.img = YMin + row * deltaY;
z.real = XMin + col * deltaX;
z.img = YMin + row * deltaY;
c.real = -0.8;
c.img = 0.156; while ((color < max_iterations) && ((z.img * z.img + z.real * z.real) < max_size))
{
double tmp = z.real * z.real - z.img * z.img + c.real;
z.img = z.img * z.real + z.real * z.img + c.img;
z.real = tmp;
color++;
}
color %= MAX_COLOR;
fractal->imageData[row * fractal->widthStep + * col] = B[color];
fractal->imageData[row * fractal->widthStep + * col + ] = G[color];
fractal->imageData[row * fractal->widthStep + * col + ] = R[color];
}
}
cvCvtColor(fractal, fractal, CV_HSV2BGR);//将HSV空间转换为BGR,方便显示
cvShowImage("Fractal", fractal);
cvWaitKey();
}
//主函数
int main()
{
cvNamedWindow("Fractal", );
fractal = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, );
fcopy = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, );
initColor();
drawPic();
cvReleaseImage(&fractal);
cvReleaseImage(&fcopy);
cvDestroyWindow("Fractal");
return ;
}
测试结果: