關於opencv中cv::Mat設置roi


opencv中設置roi實驗:

 1     cv::Mat SrcImg;
 2     SrcImg = cv::imread("../resource/cpw3.png");    
 3     cv::imshow("原圖像",SrcImg);
 4 
 5     // 第一次提取部分ROI
 6     cv::Rect SrcImgROI = cv::Rect( SrcImg.cols/2, 0, SrcImg.cols/2, SrcImg.rows/2);
 7     cv::Mat SrcROIImg = SrcImg(SrcImgROI);
 8     cv::imshow("ROI",SrcROIImg);
 9 
10     // 第一次改變ROI中的值,原圖像也改變,表示公用一個內存
11     SrcROIImg.setTo(cv::Scalar(0,0,255));
12     cv::imshow("原圖像-2",SrcImg);
13 
14     cv::Size wholeSize;
15     cv::Point ofs;
16     // 第一次獲取ROI相對於原圖像的偏移以及尺寸,wholeSize為原圖像尺寸,ofs為該roi在原圖像的偏移
17     SrcROIImg.locateROI(wholeSize,ofs);
18     printf("ROI mat: wholeSize:(%d,%d),ofs:(%d,%d)\n",wholeSize.width,wholeSize.height,ofs.x,ofs.y);
19 
20     // 調整ROI大小尺寸
21     SrcROIImg.adjustROI(0, -SrcImg.rows/5, -SrcImg.cols/5, 0);
22     cv::imshow("ROI-2",SrcROIImg);
23 
24     // 第二次改變調整后ROI中的值,原圖像也改變,表示公用一個內存
25     SrcROIImg.setTo(cv::Scalar(255,0,0));
26     cv::imshow("原圖像-3",SrcImg);
27 
28     // 第二次獲取調整后的ROI相對於原圖像的偏移以及尺寸
29     SrcROIImg.locateROI(wholeSize,ofs);
30     printf("After Adjust ROI mat: wholeSize:(%d,%d),ofs:(%d,%d)\n",wholeSize.width,wholeSize.height,ofs.x,ofs.y);
31 
32     // 第三次 獲取原圖像ROI部分ROI
33     SrcImg = SrcImg(SrcImgROI);
34     cv::imshow("ROI-3",SrcImg);

1.原圖像為:

2. 第一次提取的ROI圖像為:

3.第一次改變ROI中的值,原圖像也改變,表示公用一個內存

 

4.第一次獲取ROI相對於原圖像的偏移以及尺寸:

5.調整ROI大小尺寸后圖像:

6.第二次改變調整后ROI中的值,原圖像也改變,表示公用一個內存:

7.第二次獲取調整后的ROI相對於原圖像的偏移以及尺寸:

8.第三次 獲取原圖像ROI部分ROI

 


免責聲明!

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



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