需要在C**Doc和C**View中进行相应修改
图像打开:
Doc.cpp中:
BOOL CCVMFCDoc::Load(IplImage** pp, LPCTSTR csFilename){ IplImage* pImg=NULL; pImg = cvLoadImage(csFilename,-1); // 读图像文件(DSCV) if (!pImg) return(false); cvFlip(pImg); // 与 DIB 像素结构一致 if (*pp) { cvReleaseImage(pp); } (*pp)=pImg; m_Display=0; return(true);}
BOOL CCVMFCDoc::OnOpenDocument(LPCTSTR lpszPathName){ if(!CDocument::OnOpenDocument(lpszPathName)) return false; Load(&pImg,lpszPathName); if(pImg) return true; return false;}
图像保存:
1.Doc.cpp中
BOOL CCVMFCDoc::Save(LPCTSTR csFilename, IplImage* pImg){ int bl; cvFlip(pImg); // 恢复原 OpenCV 位图结构 bl=cvSaveImage(csFilename,pImg); // 图像存盘 return(bl);}
2.View.cpp中
void CCVMFCView::OnFileSaveAs()//图像保存{ CFileDialog dlg(false,"*.bmp","Test.bmp",OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"保存为(*.bmp)|*.bmp|所有文件(*.*)|*.*||"); CString strPath(""); if(dlg.DoModal()==IDOK) { cvFlip(workImg); strPath=dlg.GetPathName(); cvSaveImage(strPath,workImg); cvFlip(workImg); }}
整体代码如下:
// CVMFCDoc.h : CCVMFCDoc 类的接口//@Author:ZrqSophia//@2012-3-2#pragma onceclass CCVMFCDoc : public CDocument{
protected: // 仅从序列化创建 CCVMFCDoc(); DECLARE_DYNCREATE(CCVMFCDoc)// 属性public:// 操作public:// 重写public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar);// 实现public: virtual ~CCVMFCDoc();#ifdef _DEBUG virtual void AssertValid() const; virtual void D

本文介绍如何在MFC多文档应用程序中使用OpenCV处理图像,包括图像的打开和保存操作。主要涉及C**Doc和C**View类的修改,详细步骤和完整代码在文中给出。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



