日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC 缩放和显示IplImage

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC 缩放和显示IplImage 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

序言:使用OpenCV嵌入MFC的框內,圖像大小不能和框大小進行匹配,因此需要縮放,使圖像適用于MFC框。

后來找到了一種新的方法,此方案貌似u已經廢棄。

(1).在MFC中顯示圖片

void CAviTestDlg::ShowImage( IplImage* img, UINT ID ) // ID 是Picture Control控件的ID號 {CDC* pDC = GetDlgItem( ID ) ->GetDC(); // 獲得顯示控件的 DC wishchinHDC hDC = pDC ->GetSafeHdc(); // 獲取 HDC(設備句柄) 來進行繪圖操作CRect rect;GetDlgItem(ID) ->GetClientRect( &rect );int rw = rect.right - rect.left; // 求出圖片控件的寬和高int rh = rect.bottom - rect.top;int iw = img->width; // 讀取圖片的寬和高int ih = img->height;int tx = (int)(rw - iw)/2; // 使圖片的顯示位置正好在控件的正中int ty = (int)(rh - ih)/2;SetRect( rect, tx, ty, tx+iw, ty+ih );CvvImage cimg;cimg.CopyOf( img ); // 復制圖片cimg.DrawToHDC( hDC, &rect ); // 將圖片繪制到顯示控件的指定區域內 參數不對?ReleaseDC( pDC );//cimg.DrawToHDC( hDC, &rect ); }

? 對于cvvImage取消后,怎么顯示的問題,還在考慮之中!!!

后記:還是直接把HighGUI嵌入到MFC里面就可以了!或者直接Copy矩陣數據。


(2).在MFC中縮放圖片

TheImage作為全局變量,首先作為適應框進行初始化!

void CAviTestDlg::ResizeImage(IplImage* img) {// 讀取圖片的寬和高int w = img->width;int h = img->height;// 找出寬和高中的較大值者int max = (w > h)? w: h;// 計算將圖片縮放到TheImage區域所需的比例因子float scale = (float) ( (float) max / 320.0f );// 縮放后圖片的寬和高int nw = (int)( w/scale );int nh = (int)( h/scale );// 為了將縮放后的圖片存入 TheImage 的正中部位,需計算圖片在 TheImage 左上角的期望坐標值int tlx = (nw > nh)? 0: (int)(320-nw)/2; //修改參數因子 wishchinint tly = (nw > nh)? (int)(240-nh)/2: 0;// 設置 TheImage 的 ROI 區域,用來存入圖片 imgcvSetImageROI( TheImage, cvRect( tlx, tly, nw, nh) );// 對圖片 img 進行縮放,并存入到 TheImage 中cvResize( img, TheImage );// 重置 TheImage 的 ROI 準備讀入下一幅圖片cvResetImageROI( TheImage ); }

總結

以上是生活随笔為你收集整理的MFC 缩放和显示IplImage的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。