我有一个帧抓取器(Silicon Software),我设法使用 OpenCV 从内存缓冲区中的指针显示抓取的图像。
现在我想创建一个应用程序(Win32)并将 openCV 窗口作为主应用程序窗口的子窗口。有人有什么想法吗?
我找到了答案,太简单了。就几行代码。这里是 :
cv::namedWindow("test",cv::WINDOW_AUTOSIZE);
hWnd2 = (HWND) cvGetWindowHandle("test");
hParent = ::GetParent(hWnd2);
::SetParent(hWnd2, hParent);
::ShowWindow(hParent, SW_HIDE);
如果您想要自己的窗口,最好跳过整个 highgui 的内容,并自己进行 blitting。
看看 cvShowImage() 的 src,highgui/src/window_w32.cpp,l 1384,看看,他们在这里做什么
不知道“子窗口”的确切含义,但您可以从 OpenCV 的 IplImage 格式中获取像素信息,并将其转换为您的窗口所需的任何格式。