ROI只能用矩形實現。然而,我有一個我想設定爲ROI的輪廓。有沒有人知道我會如何將輪廓用作ROI而不是矩形?在OpenCV中使用ROI?
否則,如果不可能,我怎麼才能將我的動作集中在特定輪廓的像素中?
謝謝
PS:抱歉,所有這些OpenCV問題。只是非常困惑:$
ROI只能用矩形實現。然而,我有一個我想設定爲ROI的輪廓。有沒有人知道我會如何將輪廓用作ROI而不是矩形?在OpenCV中使用ROI?
否則,如果不可能,我怎麼才能將我的動作集中在特定輪廓的像素中?
謝謝
PS:抱歉,所有這些OpenCV問題。只是非常困惑:$
OpenCV只支持矩形投資回報率。
但是,要對特定像素進行一些處理,可以使用一些輔助函數。
其中之一是pointPolygonTest(),它告訴你一個給定的像素不屬於多邊形。
所以,你可以寫類似
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(pointPolygonTest(Point(i,j),myPolygon))
{
// do some processing
}
}
}
另一個(快)選項是一個由@ andeas-haferburg sugested。製作一個模板在新的灰度圖像畫的多邊形:
drawPoly()
(這樣的背景是0,多邊形爲255),那麼你可以通過一些其他的功能,或自己使用它:
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(mask[j+w*i]))
{
// do some processing
}
}
}
上面的例子只是僞代碼,你必須使它工作。
謝謝你幫了很多 – user1017485
@ user1017485你想不通怎麼辦?我有類似的問題。 – Mzk
@ user1017485你有想過嗎?我也想知道如何做到這一點。 – bearzk
標題中有錯字。此外,大多數OpenCV函數都有一個掩碼參數,並且只能在掩碼具有特殊值的輸入區域進行操作。你究竟想要做什麼? –
我想在預定輪廓的像素上使用直方圖反投影。所以基本上我會創建一個充滿輪廓的黑白遮罩,然後用它作爲我想使用直方圖反投影的圖像的遮罩? – user1017485
如果您不想在輪廓中獲取像素,就像在使用輪廓遮罩之前所建議的那樣(繪製輪廓 - 黑色的白色,然後將其用作原始圖像上的遮罩)是顯而易見的方法。 – AruniRC