废话不多说,步骤如下:
下载版本opencv2.3.1版本
vs2010对应vc10代号.
<1> : 新建一个控制台程序,比如opencv01的工程:
然后鼠标点击该工程右击快捷菜单选择properties:
左侧列表中选择VC++ directories,然后右侧配置include directories和library directories环境路径:
下面配置include directories :
E:\liuzhibao\opencv\opencv\build\include\opencv
E:\liuzhibao\opencv\opencv\build\include\opencv2
E:\liuzhibao\opencv\opencv\build\include
我是把opencv**.exe解压在E:\liuzhibao\opencv\目录中,根据自己解压的路径进行调整
下面配置library directories :
E:\liuzhibao\opencv\opencv\build\x86\vc10\lib
配置上面了以后,然后再选择properties左侧栏中的linker->input项:
上面右侧第一项additional dependence(附加依赖):这个地方需要注意,因为vs是提供debug/release,所以debug和release都需要设置:
debug :
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
release :
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
上面基本配置OK了,既可以开始使用了.
但是一般可能会遇到两种问题:
<1> :
Cannot find or open the PDB file
1. Ctrl + F5运行就可以了(最好的解决方案)
2. 在cmd命令行下执行程序。
3. 把"Microsoft Symbol Servers"勾上(Tools -> Options -> Debugging -> Symbols).
4. http://blog.163.com/chenpeijie0_0/blog/static/1830945712011780275118
原因:程序输出的地方是系统而不是vs2012
5.Debug->Options and Settings->The left to check: Enable Source server support->Symbols->the left to check: Microsoft Symbol Servers->Runing(F5)->OK
注:解决方案还有就是在每个main函数结束的时候即return 0之前加上 system("pause");
上面的意思很明白,看你运行的方式,可以通过使用ctrl+f5快捷键运行,如果用惯了vs软件上面的开始绿色箭头按钮运行,就按照3或者5步进行修改既可以了.
<2> : tbb_debug.dll库文件问题:
编译程序,可能会出现提示错误:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该程序以解决问题。”
解决方法:到D\opencv2.3.1\build\common\tbb\ia32\vc10找到tbb.dll,复制一份,然后重命名为tbb_debug.dl,将tbb_debug.dll拷贝到D:\opencv2.3.1\build\x86\vc10\bin目录下
基本上就是上面所说的,下面给一个验证程序:
// OpencvCandy.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
IplImage *g_pSrcImage, *g_pCannyImg;
const char *pstrWindowsCannyTitle = "边缘检测图";
void on_trackbar(int threshold)
{
//canny边缘检测
cvCanny(g_pSrcImage, g_pCannyImg, threshold, threshold * 3, 3);
cvShowImage(pstrWindowsCannyTitle, g_pCannyImg);
}
int _tmain(int argc, _TCHAR* argv[])
{
const char *pstrImageName = "lin.jpg";
const char *pstrWindowsSrcTitle = "原图";
const char *pstrWindowsToolBar = "Threshold";
//从文件中载入图像的灰度图CV_LOAD_IMAGE_GRAYSCALE - 灰度图
g_pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_GRAYSCALE);
g_pCannyImg = cvCreateImage(cvGetSize(g_pSrcImage), IPL_DEPTH_8U, 1);
//创建窗口
cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);
cvNamedWindow(pstrWindowsCannyTitle, CV_WINDOW_AUTOSIZE);
//创建滑动条
int nThresholdEdge = 1;
cvCreateTrackbar(pstrWindowsToolBar, pstrWindowsCannyTitle, &nThresholdEdge, 100, on_trackbar);
//在指定窗口中显示图像
cvShowImage(pstrWindowsSrcTitle, g_pSrcImage);
on_trackbar(37);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsSrcTitle);
cvDestroyWindow(pstrWindowsCannyTitle);
cvReleaseImage(&g_pSrcImage);
cvReleaseImage(&g_pCannyImg);
return 0;
}
一个candy边缘检测的程序.记住在工程目录下放一张lin.jpg的图片.如果是彩色图,程序将会先灰化,在进行边缘检测.
运行效果如下:
左边为灰化的图片,右边为边缘检测的效果图,可以调节上面的进度条设置御阀值,获得不通的显示效果.