【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于OpenCV的VC2008程序开发 - 图形图像相关资料,希望对各位网友有所帮助!
第19卷 第11期 牡丹江大学学报 Vol.19 No.11 2010年11月 Journal of Mudanjiang University Nov. 2010 105文章编号1008-8717201011-0105-02 基于OpenCV的
VC2008程序开发 王 雪 艳 牡丹江大学黑龙江 牡丹江 157011 摘 要针对图象处理的工程应用问题主要介绍了
开源视觉类库OpenCV的特点。
然后结合Picture控件及CvvImage类在
VC2008 MFC开发环境下利用OpenCV来具体实现程序的应用开发。
关键词OpenCV
VC2008MFC 中图分类号TP311 文献标识码A 一、引言 随着摄像机的多功能化计算机处理能力的提升以及视觉算法越来越成熟计算机视觉这一领域在飞速发展。
同时OpenCV正在扮演一个非常重要的角色1。
OpenCVOpen Source Computer Vision Library是由Intel公司带头开发的
开源视觉类库。
之前Intel的IPLImage Processing Library提供一些底层的图像处理函数。
IPL属于IPPIntegrated Performance Primitives而IPP是收费的源
代码也不公开。
OpenCV却是免费的源码也对外开放同时还为Intel公司的IPP提供了透明的接口。
OpenCV主要是用C/C函数写的并且可以在LinuxWindows和Mac OS X等环境下运行。
在OpenCV中有很多图像处理和计算机视觉领域的成熟算法研究人员可以在前人已完成的成熟算法的基础上去开展自己的工作这使得其成为我们研究开发的首选也是不容置疑的。
Intel公司继OpenCV.版本发布后经过两年的不懈努力终于在2008年10月15日发布了新的版本OpenCV_1.1pre1a2。
这一版本较1.0版本相比变化较大的是1.0版本的cvcam模块已经移除而视频输入等相关功能都集合到Highgui模块中但目前OpenCV仍然不能支持Borland编译器以及64位Windows系统3。
在OpenCV中用IplImage结构创建和处理图像这一结构定义来源于IPL4。
同时它也提供了CvImage类与CvvImage类来封装IplImage结构。
在对图像处理的过程中是对IplImage结构进行处理的而这两个图像类还提供一些函数来调用图像对象等功能操作。
在本文程序实现过程中主要是用了CvvImage类。
CvvImage类提供的DrawToHDC函数可以绘制图像的ROI区域到DC指定区域去。
在Windows系统环境中开发工具我们选择了Microsoft公司于2007年11月推出的Visual Studio 2008。
利用Window系统结合
VC开发工具时OpenCV提供的很多源
代码都是基于控制台下开发的。
在控制台下开发程序
代码简单也可以减少界面编程等开发
代码的时间使研究人员的思索重点在于算法的具体实现上。
在实际的工程开发过程中往往会采用
VC下的MFC进行工程开发。
这主要是因为在工程项目中需要设计一些界面便于软件应用人员的使用。
MFC提供了可视化编程使得项目开发人员可以把精力主要用在具体功能的实现上而对界面设计则通过可视化工具较容易地实现。
OpenCV1.1prela的Release notes中未提到目前OpenCV在Windows系统下是否支持VS2008。
基于这个问题本文在
VC2008开发环境下结合OpenCV开发了一个图象与视频处理程序利用此程序我们可以对图片进行灰度化计算其直方图边缘检测以及对视频图象进行跟踪。
从而实现OpenCV在
VC2008下程序的开发。
二关键技术的编程实现 一实验环境 实验是基于如下平台进行开发的操作系统Windows XP Professional Service Pack 2开发工具Visual Studio 2008OpenCV采用OpenCV1.1prela版本。
在MFC框架下可以结合Picture Control与CvvImage类进行图片显示调用以及调用OpenCV函数进行图象处理。
二实验过程 1开发环境配置5 1安装OpenCV。
首先需要将bin目录添加到系统Path变量这样是为了在运行程序时使程序能够找到所需的OpenCV动态链接库文件。
此处为OpenCV安装的路径。
2配置
VC2008 ①在Tools-Options-Projects and Solution -
VC Directories-Show directories for下拉列表框选择Library files添加路径lib ②Show directories for下拉列表框选择Include Files添加如下路径 收稿日期2010-05-12 作者简介王雪艳1974—女黑龙江省呼兰人牡丹江大学副教授工学硕士研究方向计算机技术。
106 cxcoreinclude cvinclude cvauxinclude mlinclude 2建立OpenCV项目 在
VC 2008中创建一个MFC AppWizardexe项目ImgProcess本实验采用基于对话框的应用开发。
项目添加库可以通过ProjectSetting设置在stdafx.h中添加如下
代码 pragma commentlibcxcore /数据结构与线性代数支持/ pragma commentlibcv /主要的openCV函数/ pragma commentlibml /机器学习包括模式分类和回归分析等/ pragma commentlibcvaux /辅助的openCV函数/ 3添加控件显示图片 1在类CImgProcessDlg中添加变量及其类型 IplImage m_ImgSrc /OpenCV对图像进行处理时采用的结构/ CvvImage m_pImgLeft /MFC中通过此变量将IplImage图片显示到控件/ IplImage gray char charfile255 CString file_name CRect rt CDC pDC 2添加Picture Control控件并添加Cstatic变量m_picLeft 3添加“打开图片”按钮将打开的图片显示到Picture Control上 void CImgProcessDlg::OnOpenpic CFileDialog dlgtrue ifdlg.DoModalIDOK file_namedlg.GetFileName CStringToCharfile_namecharfile/自定义函数将Cstring转换为Char类型/ m_ImgSrccvLoadImagecharfile1 m_pImgLeft.CopyOfm_ImgSrc-1 /CvvImage类才提供将图片显示于HDC上的功能/ pDCm_picLeft.GetDC /获取Picture Control句柄/ rt.SetRect00m_pImgLeft.Widthm_pImgLeft.Height m_picLeft.SetWindowPosNULL00 300360SWP_NOZORDERSWP_NOMOVE /设置Picture Control的位置信息/ m_picLeft.GetClientRectrt /使图片的显示大小与Picture Control的大小一致/ m_pImgLeft.DrawToHDCpDC-GetSafeHdcrt/将CvvImage图在控件显示/ 另外还需要在MFC上显示视频通过cvQueryFrame函数获取视频文件中的每一帧图象保存为IplImage格式采用同样的方法处理显示。
在OpenCV1.1prela版本中已添加了对DirectShow的支持可见OpenCV对视频数据也提供了很大的支持。
4添加按钮对RGB图作灰度化处理 void CImgProcessDlg::OnMenuOpenvideo //将RGB图像转换为灰度图像 graycvCreateImagecvSizeimgsrc-widthimgsrc-heightIPL_DEPTH_8U1 cvCvtColor imgsrc gray CV_RGB2GRAY DisplayOnRightgray //自定义函数将图象显示在右边的控件上 三、程序结果 最后我们给出实验结果图。
这是
VC2008 MFC环境下调用OpenCV函数进行直方图计算的结果显示图。
图 对lena.jpg转换为灰度图的显示结果 图2 对灰度图计算直方图的显示结果 四、结语 OpenCV一直以来得到Intel公司的支持并且获得了Willow Garage公司的资助这无疑是如虎添翼。
基于openCV的免费性再加上本文中讲述的在MFC环境下调用图像处理方法我们可以将其应用在近期的工程开发项目中。
除此之外OpenCV内含很多计算机视觉领域的算法可以基于此平台进行处理。
参考文献 1Gary Bradski Adrian Kaehler.Learning OpenCV: Computer Vision with the OpenCV LibraryM. OREILLY20083. 2陈胜勇刘盛.基于OpenCV的计算机视觉技术实现M.科学出版社2008. 3http://sourceforge.net. 4Open Source Computer Vision Library Reference ManualM. 2001. 5刘瑞祯于仕琪.OpenCV教程——基础篇M.北京北京航空航天大学出版社2007.