【opencv學習筆記】SetImageROI函數設置ROI區域的作用及用法


 雖然先前知道ROI區域是感興趣區域,但是真正看到調用了OpenCV的cvSetImageROI函數時,並不知道它的作用,所以還是單獨寫了一段代碼對這個函數進行探究。

 

OpenCVchm文檔中對cvSetImageROI函數的介紹如下:

void cvSetImageROI( IplImage* image, CvRect rect );
image 
圖像. 
rect 
ROI 矩形. 
函數 cvSetImageROI 基於給定的矩形設置圖像的 ROI(感興趣區域) . 如果ROI是NULL 並且參數RECT的值不等於整個圖像, ROI被分配. 不像 COI, 大多數的 OpenCV 函數支持 ROI 並且處理它就像它是一個分離的圖像 (例如, 所有的像素坐標從ROI的左上角或左下角(基於圖像的結構)計算。 

測試代碼:

 

[cpp]  view plain  copy
 
  1. #include<cv.h>  
  2. #include<cxcore.h>  
  3. #include<highgui.h>  
  4. void main()  
  5. {  
  6.     IplImage *res,*dst;  
  7.     CvRect rect;  
  8.     rect.x=130,rect.y=30,rect.width=200,rect.height=200;  
  9.     res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//載入一張圖片  
  10.     dst=cvCreateImage(cvSize(200,200),8,3);//創建圖像空間  
  11.   
  12.     //創建窗口  
  13.     cvNamedWindow("res",CV_WINDOW_AUTOSIZE);  
  14.     cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);  
  15.   
  16.     //設置ROI區域  
  17.     cvSetImageROI(res,rect);  
  18.   
  19.     //提取ROI  
  20.     cvCopy(res,dst);  
  21.   
  22.     //取消設置  
  23.     cvResetImageROI(res);  
  24.   
  25.     //顯示圖像  
  26.     cvShowImage("res",res);  
  27.     cvShowImage("dst",dst);  
  28.     cvWaitKey(0);  
  29.   
  30.     cvDestroyWindow("res");  
  31.     cvDestroyWindow("dst");  
  32.   
  33.     cvReleaseImage(&res);  
  34.     cvReleaseImage(&dst);  
  35.   
  36.   
  37.   
  38. }  

 

 

運行結果(res為原圖,dst為提取的ROI區域):


 

個人總結:

   在對某IplImage圖像用cvSetImageROI函數設置了ROI后,對圖像的處理都將僅限於ROI區域,相當於該圖像變為了ROI中的圖像,測試代碼值僅用cvCopy(復制圖像的函數),進行了測試,實際上對於任何處理圖像IplImage類型的函數,處理設置了ROI區域的圖像類對象,都是處理它的ROI區域。

 

如果ROI為NULL並且參數rect的值不等於整個圖像,則ROI被分配。大多數OpenCV函數都支持ROI, 並將它作為一個獨立圖像進行處理,所有像素坐標都是從ROI的左上角或者左下角(基於圖像結構)開始計算的。
比如:
IplImage *img1=cvLoadImage("1.jpg");
cvSetImageROI(img1,cvRect(100,100,356,156));//設置img1的ROI區域
之后顯示img1圖像是 只顯示ROI標識的一部分,即改變了指針img1,但是它 仍舊保留有原來圖像的信息,在執行這一句cvResetImageROI(img1);之后,img1指示原來的圖像信息。執行下面的例子即可明了顯示。


免責聲明!

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



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