MFC嵌套OpenCV窗口並顯示圖片


1.圖片適應PIC conrol大小

    g_SrcImage = imread(fileDict[0]); //加載圖片

    CRect rect;
    m_pic.GetWindowRect(rect); //獲取picture control控件變量的rect
    namedWindow(WINDOW_NAME,CV_WINDOW_NORMAL);//可以改變窗口大小
    resizeWindow(WINDOW_NAME, rect.Width(), rect.Height());//根據piccontrol的大下設置opencv窗口的大小

    HWND hWnd = (HWND)cvGetWindowHandle(WINDOW_NAME);//嵌套opencv窗口
    HWND hParent = ::GetParent(hWnd);
    ::SetParent(hWnd, GetDlgItem(IDC_PIC)->m_hWnd);
    ::ShowWindow(hParent, SW_HIDE);
imshow(WINDOW_NAME, g_SrcImage);
//將圖片顯示在opencv窗口上,會強制改變圖片原始比例

2.PIC Control大小適應圖片

 1     namedWindow(WINDOW_NAME);//創建OpenCV窗口    
 2     HWND hWnd = (HWND)cvGetWindowHandle(WINDOW_NAME);//嵌套opencv窗口
 3     HWND hParent = ::GetParent(hWnd);
 4     ::SetParent(hWnd, GetDlgItem(IDC_PIC)->m_hWnd);
 5     ::ShowWindow(hParent, SW_HIDE);
 6 
 7     
 8     g_SrcImage = imread(fileDict[0]); //加載圖片
 9 
10     CWnd* pWnd1 = GetDlgItem(IDD_SEG_DIALOG); //獲取主窗口句柄
11     
12     int x = GetSystemMetrics(SM_CXSCREEN) / 2 - g_SrcImage.cols / 2; //使mfc窗口居中顯示,獲取對應於屏幕的左上角點
13     int y = GetSystemMetrics(SM_CYSCREEN) / 2 - g_SrcImage.rows / 2;
14 
15     SetWindowPos(pWnd1, x, y, g_SrcImage.cols + 180, g_SrcImage.rows + 65, SWP_SHOWWINDOW); //根據圖片大小,設置mfc窗口位置和大小
16     m_pic.MoveWindow(150, 10, g_SrcImage.cols, g_SrcImage.rows); //根據圖片大小,設置piccontrol大小
17     
18     imshow(WINDOW_NAME, g_SrcImage);//opencv顯示圖片
19     waitKey(20);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM