1、OpenCV下载地址:http://opencv.org/downloads.html
因为本人电脑装的是vs2010,所以下载的是opencv-2.4.11.exe(vc10、vc11、vc12),最新版3.0没有vc10;
OpenCV%代表安装目录,vc10是vc的版本,可以查看目录支持什么版本
- 32位系统 & VC2010,库目录 %
OpenCV%uildx86vc10lib
- 64位系统 & VC2010,库目为:%
OpenCV%uildx64vc10lib
解压:D:opencv
2、配置
(1).创建一个MFC的对话框程序:
打开 项目---属性
配置属性”->“VC++目录”->“包含目录”,包含
D:opencvD:opencvuildinclude
D:opencvuildincludeopencv
D:opencvuildincludeopencv
(3).配置lib目录(此处是Debug版本)
//附加包含目录D:opencvuildx86vc10lib (说明xxxxxd.lib是Debug版本, xxxxx.lib是Release版本)
opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib
(4).引入lib对应的dll
3、显示第一个图片
1 void CCOpenCvDemoDlg::OnBnClickedButton3() 2 { 3 //显示图像文件 4 const char *pstrImageName = "F:\VSProject\COpenCvDemo\image\second.jpg"; 5 const char *pstrWindowsTitle = "OpenCV第一个程序"; 6 //从文件中读取图像 7 IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED); 8 9 //创建窗口 10 cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE); 11 12 //在指定窗口中显示图像 13 cvShowImage(pstrWindowsTitle, pImage); 14 15 //等待按键事件 16 cvWaitKey(); 17 18 cvDestroyWindow(pstrWindowsTitle); 19 cvReleaseImage(&pImage); 20 }
对代码中的主要函数进行下讲解:
1.创建窗口 cvNamedWindow
函数名称:cvNamedWindow
函数功能:创建窗口
函数原型:
int cvNamedWindow( const char* name, int
flags=CV_WINDOW_AUTOSIZE );
参数说明:
第一个参数表示窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。被创建的窗口可以通过它们的名字被引用。
第二个参数表示窗口属性标志。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像。
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。
注意:
如果已经存在这个名字的窗口,这个函数将不做任何事情。
2.在指定窗口中显示图像 cvShowImage
函数名称:cvShowImage
函数功能:在指定窗口中显示图像
函数原型:
void cvShowImage( const char*
name, const CvArr* image );
参数说明:
第一个参数:窗口的名字。
第二个参数:被显示的图像。
3.等待按键事件 cvWaitKey
函数名称:cvWaitKey
函数功能:等待按键事件
函数原型:
int cvWaitKey( int delay=0
);
参数说明:
第一个参数:延迟的毫秒数,当delay<=0时表示无限等待。
函数返回值:
如果超过指定时间则返回-1,否则返回被按键的值。