如何在Win32 c++应用程序中将OpenCV显示窗口添加为另一个窗口的子窗口

How to add OpenCV display window as child of another window in Win32 c++ Applications?

本文关键字:窗口 添加 显示 另一个 OpenCV Win32 c++ 应用程序      更新时间:2023-10-16

我有一个帧抓取器(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的东西,还有你自己的闪电战。

看看cvShowImage()的src,highgui/src/window_w32.cpp,l 1384,看看他们在这里做什么

不知道"子窗口"的确切含义,但您可以从OpenCV的IplImage格式中获取像素信息,并将其转换为您的窗口所需的任何格式。