OpenCV 窗口作为 MFC 窗口子窗口的实现方法
在使用 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 窗口的子窗口的基本过程,实际使用时还需要根据具体需求进行适当的调整和修改。
原文地址: https://www.cveoy.top/t/topic/0oD 著作权归作者所有。请勿转载和采集!