用VC++的MFC实现图像的打开,显示,保存功能的代码
我是还没入门的新手,所以每个步骤都要求详细,在哪个文件里哪个地方加什么代码都请说明,并附上代码,最好还能解释一下它的作用。找过好多网上提供的代码,都有报错,所以请把步骤写...
我是还没入门的新手,所以每个步骤都要求详细,在哪个文件里哪个地方加什么代码都请说明,并附上代码,最好还能解释一下它的作用。找过好多网上提供的代码,都有报错,所以请把步骤写清楚些,待验证过正确之后,赏分。
展开
展开全部
这个,工程量有点大了
有两种方法:
第一种:调用opencv库,在MFC中,这是一种非常方便的方法,但前提是已经配置好了opencv;
第二种:自己写一个类,然后进行打开,显示和保存,这种方法我也会,不过工程量和代码非常多,不知道你要哪种?
有两种方法:
第一种:调用opencv库,在MFC中,这是一种非常方便的方法,但前提是已经配置好了opencv;
第二种:自己写一个类,然后进行打开,显示和保存,这种方法我也会,不过工程量和代码非常多,不知道你要哪种?
更多追问追答
追问
opencv还没用过,我想要第二种的
追答
OK。。。信息量可能有点大,你给个邮箱,我发个类给你
第一步:将这个类添加到你的工程中;
第二步:在你的MFC中利用类向导位你的doc类添加OnOpenDocument这个函数‘
第三步:在doc类的头文件里面public里面定义:CBmpFile hDIB;,这个hDIB就是用来存储你的图像的。
第四步:在你第二步加载的OnOpenDocument(LPCTSTR lpszPathName)函数里面,添加代码如下所示:
BOOL CPatternRecognitionDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
/*CPatternRecognitionView *mView=(CPatternRecognitionView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView();*/
hDIB.Load4File((LPCSTR)lpszPathName);
UpdateAllViews(NULL);
return TRUE;
}
第五步:显示:在view类的ondraw()函数中添加代码如下所示:
void CPatternRecognitionView::OnDraw(CDC* pDC)
{
CPatternRecognitionDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
m_bmp=&pDoc->hDIB;
int nXsize,nYsize;//图像高宽
nXsize = m_bmp->m_Cols;
nYsize = m_bmp->m_Rows;
//temp->CreateBmp(nXsize,nYsize,NULL);
CSize sizeTotal;
//m_bmp=*(pDoc->temp1);
sizeTotal.cx = m_bmp->m_Cols;
sizeTotal.cy = m_bmp->m_Rows;
SetScrollSizes(MM_TEXT, sizeTotal);
m_bmp->Draw2DC(pDC->m_hDC,0,0);
// TODO: add draw code for native data here
}
到这里显示就成功了
第6步:存储,在doc类里面用第二步相同的方法加载OnSaveDocument(LPCTSTR lpszPathName) 函数,在该函数中添加代码如下所示:
BOOL CPatternRecognitionDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
// TODO: Add your specialized code here and/or call the base class
hDIB.Save2File((LPCSTR)lpszPathName);
return CDocument::OnSaveDocument(lpszPathName);
}
OK了!!希望能帮到你。。
展开全部
vc++数字图像处理的开头部分有讲解,书中有源代码(在mfc下的)。
windows api级别的,需要了解图像文件的结构
加载BITMAP,新建一个图像文件,将BITMAP的dib信息,header info信息写入这个图像文件,关闭文件句柄
看你的说法MFC还不会用吧,至少要了解消息响应再说
windows api级别的,需要了解图像文件的结构
加载BITMAP,新建一个图像文件,将BITMAP的dib信息,header info信息写入这个图像文件,关闭文件句柄
看你的说法MFC还不会用吧,至少要了解消息响应再说
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用GDI+相对容易一些。代码量也少一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哥们,你还是去搞matlab吧,MFC中CDib类牵扯到BMP图像的四部份信息和MFC中多种类的调用,一时半会不好理解,可以去网上下载源码,了解CDib类调出的长宽,头指针就足够了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询