2012-12-26 60 views
0

我正在嘗試在圖像上創建一個矩形ROI,其中某個像素的位置是矩形的中心。 我應該怎麼做呢?在C++中使用OpenCV給出一箇中心像素值的矩形ROI

image= imread("C:\\image.png",1); 
watermark=imread("C:\\watermark.png",0); 
split(image,yuv_channels); 

ROI=yuv_channels[0](Rect(100,100,watermark.cols,watermark.rows)); 

我應該如何修改它使位置(100,100)位於ROI的中心?

提前感謝Thankyou提供的任何幫助。

+0

我猜你應該知道列和行號。我可能是錯的,但是你可以從你的中心區域估計錨點。 – emreakyilmaz

回答

0

使用下面的代碼創建一個以x,y爲中心的MxM矩形。分A,B可以作爲錨點在OpenCV的

Point a; 
    Point b; 
    //MxM rectangle 
    a.x = x - M/2; 
    a.y = y - M/2; 
    b.x = x + M/2; 
    b.y = y + M/2; 
0

我在c#之前做過,在類Image中有一個函數。該方法稱爲'SetROI()',我希望它對你有所幫助

+0

不,對不起。這沒有幫助。 SetROI仍然使用(100,100)作爲矩形的定位點,即矩形的左上角, – user1926691

0

的矩形函數矩形我不知道我是否理解,但如果你只是想使點(rect.x,矩形.Y)是在矩形中間只需使用此代碼:

Rect rect = Rect(100, 100, 234, 456); 
rect -= Point(rect.width/2, rect.height/2) 

,或者如果你想這樣做在一個行:

Rect rect = Rect(100 - watermatk.cols/2, 100 - watermark.rows/2, watermark.cols, watermark.rows); 
相關問題