簡體   English   中英

python opencv - 通過 position 過濾輪廓

[英]python opencv - filter contours by position

我使用此代碼查找一些斑點,並選擇最大的一個。

contours, hierarchy = cv2.findContours(th1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
if len(contours) != 0:
    c = max(contours, key=cv2.contourArea)

現在,我需要以某種方式更改此代碼,以便它返回框架中間的輪廓。 (它的邊界框覆蓋了圖像的中心像素)

除了獲取所有輪廓的邊界框外,我不知道該怎么做

xbox, ybox, wbox, hbox = cv2.boundingRect(cont)

然后檢查 x 和 y 是否小於中心,並且 x+w 和 y+h a 大於中心。 它看起來不像是一種有效的方法,因為最多可以有 500 個小的 controus..

我想建議這種方法,也許有更直接的方法。 我在這里寫代碼,而是給出一個可能的算法:

  • 迭代輪廓並使用二進制墊中的掩碼繪制每個輪廓(黑白和填充)
  • 檢查中心像素(圖像寬度/2,圖像高度/2)是否等於1

那應該有效。

OpenCV 中有一個 function 將檢查給定點是否在輪廓內(返回 1)、邊界上(返回 0)或外部(返回 -1)。

cv2.pointPolygonTest()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM