加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用OpenCV在MFC/C++应用程序中显示图像

发布时间:2020-12-16 10:19:23 所属栏目:百科 来源:网络整理
导读:我想在MFC应用程序中显示我从具有OpenCV(cvCaptureFromAVI函数)的avi文件中捕获的帧. 我是MFC的新手,但觉得我已经接近使它成功了.但是,不是在图片框中显示的帧,它们显示在新窗口中. cvGetWindowName始终返回null值. 有我的代码: CWnd* hPic = 0;hPic = GetD
我想在MFC应用程序中显示我从具有OpenCV(cvCaptureFromAVI函数)的avi文件中捕获的帧.

我是MFC的新手,但觉得我已经接近使它成功了.但是,不是在图片框中显示的帧,它们显示在新窗口中.

cvGetWindowName始终返回null值.

有我的代码:

CWnd* hPic = 0;
hPic = GetDlgItem(IDC_STATICPIC1);  
const char* szWindName = cvGetWindowName(hPic->GetSafeHwnd());
cvShowImage(szWindName,frame_copy);

解决方法

经过长时间的研究,我发现了一些可以使它发挥作用的东西

解决方案是创建窗口,然后将其插入图片框.我不确定这是好习惯,但我现在还没有找到更好的东西.

cvNamedWindow("IDC_STATIC_OUTPUT",0); 
cvResizeWindow("IDC_STATIC_OUTPUT",420,240);

HWND hWnd = (HWND) cvGetWindowHandle("IDC_STATIC_OUTPUT"); 
HWND hParent = ::GetParent(hWnd); 
     ::SetParent(hWnd,GetDlgItem(IDC_PIC1)->m_hWnd); 
     ::ShowWindow(hParent,SW_HIDE); 

cvShowImage("IDC_STATIC_OUTPUT",frame_copy);

在这种情况下,图片框称为IDC_PIC1,frame_copy是OpenCV IplImage.

希望这有助于某人.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读