我正在编写一个 opencv 代码,并想使用 MFC 在 GUI 上显示框架。
问题是我不知道怎么做。
在 OnInitDialog()
如果我尝试将 cvWindow 嵌入到 MFC 表单中,这可能会起作用。
display = new IplImage(trackview);//trackview is a totally black Mat.
cvNamedWindow("IDC_STATIC_OUTPUT", 0);
cvResizeWindow("IDC_STATIC_OUTPUT", 480, 640);
hWnd = (HWND) cvGetWindowHandle("IDC_STATIC_OUTPUT");
hParent = ::GetParent(hWnd);
::SetParent(hWnd, GetDlgItem(ID_DISPLAY)->m_hWnd);
::ShowWindow(hParent, SW_HIDE);
cvShowImage("IDC_STATIC_OUTPUT", display);
但是当我嵌入 OpenCV 代码并打开网络摄像头时,GUI 没有响应,并且框架无法显示。即使我只是将这个示例代码(打开网络摄像头)添加到 OnInitDialog(),也不会显示应用程序表单。
奇怪的是我写了一个“imwrite(“frame.png”,tmp)”,框架可以写入文件。但 GUI 没有响应。
while( true )
{
CvCapture* capture;
capture = cvCaptureFromCAM(0);
frame = cvQueryFrame( capture );
Mat tmp(frame);
imwrite("frame.png",tmp);
}
顺便说一句,有没有更好的方法在 MFC 上显示 OpenCV IplImage?有一个 cvvImage.showImage() 函数,但在 Opecv 2.4 版本中被丢弃。