MFC中如何在一个picture 控件中显示一张opencv读入的图片? 100

我设置了一个按钮时触发读入图片然后在picture控件中显示,代码如下:voidCVideoThreadDlg::OnBnClickedButton1(){IplImag... 我设置了一个按钮时触发读入图片然后在picture控件中显示,代码如下:
void CVideoThreadDlg::OnBnClickedButton1()
{
IplImage* img_src = cvLoadImage("img4.jpg",CV_LOAD_IMAGE_GRAYSCALE);
ShowImage(img_src, IDC_STATIC_PIC);
}
在控件中显示图像的函数:
void CVideoThreadDlg::ShowImage(IplImage *img,UINT ID)
{
CDC* pDC=GetDlgItem(ID)->GetDC();
HDC hDC=pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
SetRect(rect,rect.left,rect.top,rect.right,rect.bottom);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);
/*ReleaseDC(pDC); */
}
这样写控件中不显示img_src指针指向的图像。
将BUTTON1 的函数改成如下:
void CVideoThreadDlg::OnBnClickedButton1()
{
CString m_strPicPath;
IplImage* TheImage;
CFileDialog dlg(true,_T("img4.JPG"),NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,_T("image file(*.bmp;*.jpg)|*.bmp;*.jpg|All Files(*.*)|*.*|"),NULL);//弹出选择图片对话框
dlg.m_ofn.lpstrTitle=_T("open Image");
if(dlg.DoModal()!=IDOK)
{
return ;
}
m_strPicPath = dlg.GetPathName();
m_strPicPath.Replace(_T("//"),_T("////"));
TheImage=cvLoadImage((CT2CA)m_strPicPath,1);
ShowImage(TheImage, IDC_STATIC_PIC);
}
即手动添加图片文件,就能在控件中显示图片了。。这是为什么,我需要的是上一种的显示图像的方法,不要手动添加的。求大神帮忙改一下。
展开
 我来答
wkr2005
2013-12-30 · TA获得超过279个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:307万
展开全部
如果下面能正确显示,上面的逻辑是正确的,我觉得应该是
IplImage* img_src = cvLoadImage("img4.jpg",CV_LOAD_IMAGE_GRAYSCALE);这里失败了;图片路径用绝对路径试试;或者获取一下程序所以目录,再加上文件名;
year医海无边
2017-01-29 · TA获得超过1.5万个赞
知道小有建树答主
回答量:9169
采纳率:66%
帮助的人:1125万
展开全部
VC6新建MFC(.exe)基于对话框工程Test,添加一个picture控件(改资源号为IDC_STATIC_PIC)和一个按钮,具体实现如下程序。 核心的实现代码如下 // 用于在控件 ID上显示图片 imgvoid CTestDlg::DrawPicToHDC(IplImage *img,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DoramiHe
2017-02-13 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59541
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
以前学opencv是时用过picture显示图片,代码十几行 不怎么美观,最后我发现opencv里只有一个函数带Hdc,好像是DrawToHDC()既然出现了HDC我想在mfc里绘图就不用说了。如果你没用CvvImage类,那么声明一个CvvImage对象CopyOf一下再DrawToHDC到mfc的任何地方都可以。
CvvImage::CopyOf
CvvImage::DrawToHDC;,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icelbja
2013-12-17 · TA获得超过138个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:151万
展开全部
以前学opencv是时用过picture显示图片,代码十几行 不怎么美观,最后我发现opencv里只有一个函数带Hdc,好像是DrawToHDC()既然出现了HDC我想在mfc里绘图就不用说了。如果你没用CvvImage类,那么声明一个CvvImage对象CopyOf一下再DrawToHDC到mfc的任何地方都可以。
CvvImage::CopyOf
CvvImage::DrawToHDC;,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式