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

标签 c++ mfc opencv

我想在 MFC 应用程序中显示我使用 OpenCV(cvCaptureFromAVI 函数)从 avi 文件捕获的帧。

我是 MFC 的新手,但感觉我快要让它工作了。但是这些帧不是显示在图片框中,而是显示在新窗口中。

cvGetWindowName 始终返回空值。

这是我的代码:

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。

希望这对某人有帮助。

关于c++ - 使用 OpenCV 在 MFC/C++ 应用程序中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6350753/

相关文章:

visual-studio - 在mfc中如何将控件置于前面

python - 获取视频中每一帧的时间戳

python - 填充轮廓圆

c++ - 如何检查 mpz_t 编号是否使用 GMP 初始化?

c++ - D3D10 常量缓冲区不工作

windows - 使用 VS2017 增强系统 DPI 缩放

C++比较冲浪描述符算法匹配有时会中断

c++ - 如何在 Cassandra C++ DataStax 中绑定(bind)小数类型

c++ - 自定义异常并不总是执行 what()

c++ - 从字符串中替换字符