在使用 OpenCV 创建窗口时,可以选择将 OpenCV 窗口作为 MFC 窗口的子窗口。在这种情况下,OpenCV 窗口将位于 MFC 窗口的指定位置。

具体来说,可以使用 MFC 的 CWnd 类的 CreateControl 函数来创建 OpenCV 窗口,并将 OpenCV 窗口作为 MFC 窗口的子窗口。在 CreateControl 函数中,可以指定 OpenCV 窗口的位置、大小等属性。

例如,以下代码示例将 OpenCV 窗口创建为 MFC 窗口的子窗口,并将其放置在 MFC 窗口的左上角:

CWnd* pMFCWnd = GetDlgItem(IDC_MFC_WINDOW); // 获取 MFC 窗口

cv::namedWindow('OpenCV Window', cv::WINDOW_NORMAL); // 创建 OpenCV 窗口

HWND hWnd = (HWND)cvGetWindowHandle('OpenCV Window'); // 获取 OpenCV 窗口的句柄

CRect rect;
pMFCWnd->GetClientRect(&rect); // 获取 MFC 窗口的客户区域大小

::SetParent(hWnd, pMFCWnd->m_hWnd); // 将 OpenCV 窗口设置为 MFC 窗口的子窗口
::MoveWindow(hWnd, 0, 0, rect.Width(), rect.Height(), TRUE); // 将 OpenCV 窗口移动到 MFC 窗口的左上角

在上述示例中,IDC_MFC_WINDOW 是 MFC 窗口的 ID,GetDlgItem 函数用于获取 MFC 窗口的指针。通过 cv::namedWindow 函数创建 OpenCV 窗口,并使用 cvGetWindowHandle 函数获取 OpenCV 窗口的句柄。然后,使用 SetParent 函数将 OpenCV 窗口设置为 MFC 窗口的子窗口,并使用 MoveWindow 函数将 OpenCV 窗口移动到 MFC 窗口的左上角。

请注意,以上示例仅展示了将 OpenCV 窗口作为 MFC 窗口的子窗口的基本过程,实际使用时还需要根据具体需求进行适当的调整和修改。

OpenCV 窗口作为 MFC 窗口子窗口的实现方法

原文地址: https://www.cveoy.top/t/topic/0oD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录