- 5
- 0
- 约2.95千字
- 约 13页
- 2018-04-30 发布于河南
- 举报
opencv建立mfc程序
窗体顶端
窗体底端 窗体顶端
窗体底端 Open Source Computer Vision Library
论坛
商业
专题
讲座
例程
安装
常见问题
函数说明
MFC中快速应用OpenCV
Wikipedia,自由的百科全书
目录
[隐藏]
1 简介和缘起
2 视频教程
2.1 介绍基本的openCV和MFC的操作
2.2 在MFC中如何应用菜单,和Canny算子的实例
3 创建SDI工程
4 加入OpenCV库支持
5 在Doc类中添加变量
6 添加虚函数
7 在View类中添加显示图像代码
8 感谢和后记以及相关讨论
9 网络其他OpenCV资源 [编辑]
简介和缘起
本教程原始讨论主题,请见 【原创】MFC中快速应用OpenCV教程,制作此教程的目的,就是为了方便广大windows下面使用MFC的用户可以轻松的在MFC窗口View类中,实现OpenCV格式图片的显示。
[编辑]
视频教程
[编辑]
介绍基本的openCV和MFC的操作
[编辑]
在MFC中如何应用菜单,和Canny算子的实例
[编辑]
创建SDI工程
我使用的是Visual C++ 6.0,因此,本教程描述的是在VC6上面演示操作,如果您使用别的版本的VC,我想应该也差不多。首先,按照VC的向导,产生一个默认的MFC的工程,注意,选择SDI单文档支持的,同时最好选择“use MFC As a static library”(防止MFC中使用OpenCV的内存泄露问题)具体请参看下面两幅图所示就这样子一路下去之后,基本的MFC框架就创建完成了。
[编辑]
加入OpenCV库支持
现在加入openCV必须的头文件和库文件。如下图所示,我们添加库文件: cxcore.lib cv.lib highgui.lib
[编辑]
在Doc类中添加变量
找到 ***Doc 也就是文档类的定义,在开头加上 HighGui.h 的头文件包含, 同时添加一个变量CImage m_image;。
注意,如果你使用的不是VC6,按照我的教程,可能编译无法通过(我的教程中,对 m_image 是设置成 protected类型的),解决的办法是将 m_image的类型设置为public,以后建议大家都使用public修饰符。具体的bug报告和分析请看这里:建议使用public修饰符
[编辑]
添加虚函数
添加两个函数,分别用来打开图片文件和保存图片文件,添加过程见下图的右键菜单。
分别添加函数OnOpenDocument 和 OnSaveDocument 如下面的代码
BOOL CSDI OpenCVDoc::OnOpenDocument(LPCTSTR lpszPathName){
if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE;
// TODO: Add your specialized creation code here
m_image.Load(lpszPathName);
return TRUE;
}
BOOL CSDI OpenCVDoc::OnSaveDocument(LPCTSTR lpszPathName){
// TODO: Add your specialized code here and/or call the base class
m_image.Save(lpszPathName);
return TRUE;
// return CDocument::OnSaveDocument(lpszPathName);
}
注意,上面本来是 return CDocument::OnSaveDocument(lpszPathName); 但是后来发现有问题,保存了图片,会导致保存后的图片的大小变成0了,改用 return TRUE;就没有问题了,具体请看论坛的讨论: /forum/viewtopic.php?f=1t=4932p=18215#p18215
[编辑]
在View类中添加显示图像代码
在View类中间添加必要的图片显示代码,主要是在Ondraw里面。
void CSDI_OpenCVView::OnDraw(CDC* pDC)
{
CSDI_OpenCVDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CImage img = pDoc -m_image;
CRect r;
GetClientRe
原创力文档

文档评论(0)