创建SDI工程
我使用的是Visual C++ 6.0,因此,本教程描述的是在VC6上面演示操作,如果您使用别的版本的VC,我想应该也差不多。首先,按照VC的向导,产生一个默认的MFC的工程,注意,选择SDI单文档支持的,同时最好选择“use MFC As a static library”(防止MFC中使用OpenCV的内存泄露问题)具体请参看下面两幅图所示
就这样子一路下去之后,基本的MFC框架就创建完成了。
找到 ***Doc 也就是文档类的定义,在开头加上 HighGui.h 的头文件包含, 同时添加一个变量CImage m_image;。
注意,如果你使用的不是VC6,按照我的教程,可能编译无法通过(我的教程中,对 m_image 是设置成 protected类型的),解决的办法是将 m_image的类型设置为public,以后建议大家都使用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;就没有问题了