资源描述:
《windows form环境下使用opencv及directshow》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WindowsForm环境下使用OpenCV及DirectShow因为要做一个简单的摄像头蔽障,考虑用OpenCV做图像处理比较方便,用WindowsForm做个简单的界面非常快速。就想在WindowsForm里用OpenCV的函数库.我的编辑环境是VC++2005(VC++8/VS2005)。把我的一些经验发上来希望能给别人提供一点帮助。首先安装OpenCV.具体安装步骤以及OpenCV的下载可以去OpenCV中文论坛www.opencv.org.cn找到,网上也有非常多的博客和论坛有介绍。这里提醒一
2、点,无论是否在安装时钩上了添加环境变量都要再手动添加一次。(是OpenCV的小BUG)。具体方法:右击我的电脑—属性—高级—环境变量—path—你OpenCV的安装路径下OpenCVbin.在VC++2005下设置OpenCV也不再啰嗦,去OpenCV中文论坛www.opencv.org.cn很好找,很详细.各种C++编辑环境下的都有.一步步照着来.MOSTIMPORTANT在Win32控制台以及MFC下都可以直接添加cv.h以及OpenCV的其他头文件,但是在WindowsForm似乎不可以.在论
3、坛里也看到有人发问是不是在WindowsForm里不能使用OpenCV.其实是可以的.很简单,WindowsForm默认是"纯MSIL公共语言运行库支持(/clr:pure)"要改成"公共语言运行库支持(/clr)".具体位置:在解决方案里,右击你的工程—属性—配置属性—常规,然后就能看到"公共语言运行库支持"的配置了.现在就可以在WindowsForm下使用OpenCV的函数库啦!!因为OpenCV从视频设备采集图像的函数cvCaptureFromCAM使用的是vfw,采用消息机制,速度较慢,测试发现
4、fps只有9-12左右,太慢了.使用DirectShow后速度可以提升到60帧/s.首先下载DirectX提别提醒:别下最新版的!!下DirectX9.0bSDK或者DirectX9.0aSDK,因为DirectX9.0cSDK之后的版本把DirectShow去掉了!!配置DirectShow开发环境我当时是参考一篇博客“LGS的BLOG”设置的,里面写的很详细,在这里要向李大哥表示感谢.我把这篇博文贴过来,供大家参考。我对原文里一个地方有异议,所以在下面修改了(红色标注)。以下转自LGS的BLOG首先
5、,就是编译baseclasses,什么是baseclasses?打开你的dx的sdk安装目录,例如:D:DX90SDKSamplesC++DirectShow这里就有一个叫baseclasses的工程,为安全起见,请先备份此工程。otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Star
6、tingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandr
7、ecorderoftheCountypartyCommitteeSecretary,Ministersand1,双击baseclasses.sln打开,提示我们需要转换工程,按提示转换就是了,编译提示错误:1>D:MicrosoftVisualStudio8VCPlatformSDKincludewinnt.h(222):errorC2146:syntaxerror:missing';'beforeidentifier'PVOID64'1>D:MicrosoftVisualStudio8V
8、CPlatformSDKincludewinnt.h(222):errorC4430:missingtypespecifier-intassumed.Note:C++doesnotsupportdefault-int1>D:MicrosoftVisualStudio8VCPlatformSDKincludewinnt.h(5940):errorC2146:syntaxerror:missing';'beforeidentif