我正在编写一个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版本中将其丢弃。
最佳答案
请在while循环中尝试cvWaitkey(30)。 cvShowImage可能需要一些时间才能显示图像。
关于opencv - 如何在MFC中显示opencv框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511197/