我想檢測圖像中的形狀(藍色區域)。如何從用戶輸入座標(紅點)開始讀取像素,掃描點周圍的像素,並在跨越形狀邊界時停止讀取,而不是像下面那樣掃描整個圖像?掃描圖像像素
for (int y = 0 < height; y++) {
for (int x = 0; x < width; x++) {
// Read and store pixel value and location
}
}
我想檢測圖像中的形狀(藍色區域)。如何從用戶輸入座標(紅點)開始讀取像素,掃描點周圍的像素,並在跨越形狀邊界時停止讀取,而不是像下面那樣掃描整個圖像?掃描圖像像素
for (int y = 0 < height; y++) {
for (int x = 0; x < width; x++) {
// Read and store pixel value and location
}
}
如果你想獲得屬於周圍的點狀像素的列表,你可以嘗試像一個flood fill,收集的「填充」他們,而不是像素。不屬於形狀的像素的不同顏色是維基百科示例的「黑色」顏色,形狀的顏色是「白色」(可填充空間)。
如果在形狀中有不同強度的孔或像素,它會起作用嗎? – askingtoomuch
關於洞:是的;關於具有不同強度的像素:您必須按照算法「看到」顏色(特別是目標顏色)的方式來滿足您的需求。最簡單的方法是完全匹配;但你可以做不同的事情。 – ShinTakezou
感謝您指引我在正確的方向。我期待有角度/極性掃描 – askingtoomuch
藍色的形狀總是長方形嗎? – ChrisW
如果顏色定義了形狀,則可以將輸入位置作爲填充填充的起點。洪水填充停止在假像素值。 – Cornstalks
@ChrisW它可以是隨機的形狀 – askingtoomuch