[英]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..
我想建議這種方法,也許有更直接的方法。 我在這里寫代碼,而是給出一個可能的算法:
那應該有效。
OpenCV 中有一個 function 將檢查給定點是否在輪廓內(返回 1)、邊界上(返回 0)或外部(返回 -1)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.