取圖像局部保存成一個圖像,或者將圖像局部和另一個圖像互換應用比較廣。
主要用到的函數是rect
1.取圖像局部保存
Rect rectL(0, 0, 15,20);
Mat img_now = img(rectL);
取圖像img的左上角,寬15像素,高20像素的圖像,生成新圖像img_now
Rect的定義
Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);
2.圖像局部互換
聲明一下,我的方法不是最優方法,但是能用
我們想把一副圖像的中間部位保留,其他部位變成0,也就是無數據(和局部互換思想一致)
1.生成一個和原圖像大小一致的純黑色矩陣
Mat CCL = Image.clone();
Mat CC = CCL.clone() * 0;
這裏用了.clone(),爲得不讓CCL變,影響到image,如果直接CCL = image會造成CCL指向image的地址,對CCL操作將會影響image。
2.將Mat格式圖像轉換爲IplImage*的形式,便於ROI操作
IplImage* ipl_imgL;
ipl_imgL = &CCL.operator IplImage();
IplImage* ipl_imgC;
ipl_imgC = &CC.operator IplImage();
3.構建rect框
Rect roi = Rect(0, round(CCL.rows / 4), CCL.cols, round(CCL.rows / 2));
Rect roi1 = Rect(0, round(CCL.rows / 4), CCL.cols, round(CCL.rows / 2));
4.設置ROI
cvSetImageROI(ipl_imgL, roi);
cvSetImageROI(ipl_imgC, roi1);
5.將設置好ROI的圖像拷貝操作並重設
cvCopy(ipl_imgL, ipl_imgC);
cvResetImageROI(ipl_imgC);
6.將IplImage*轉換會Mat
Mat src_color1(ipl_imgC);
src_color = src_color1.clone();
ROI Region Of Interest的縮寫,圖像處理中的術語“感興趣區”。設置圖像的ROI便是設置要處理的圖像中需要提取的區域。
IplImage*爲opencv2.1之前使用的圖像表達結果,Mat爲之後改版的結構,這裏二郎並不清楚ROI爲什麼在直接操作Mat時會出現問題,希望懂的學者可以在下方留言賜教,謝謝。