Я пытаюсь разработать алгоритм для обнаружения трапециевидной формы. Я пытаюсь найти способ обнаружить угол, обращенный к трапеции, чтобы различать квадраты и трапеции.
Я просто oop через контуры и пытаюсь различить guish трапецоид по другим признакам, так как я не совсем уверен, как я могу проверить, что линии на трапеции обратные. Любые идеи?
Вот пример того, что я отслеживаю: ![enter image description here](https://i.stack.imgur.com/2ivlg.jpg)
Это то, что я до сих пор придумал:
for cnt in contourList:
hull = cv2.convexHull(cnt)
x, y, w, h = cv2.boundingRect(cnt)
area = h * w * 1.0
originalArea = cv2.contourArea(hull)
#skip if not minimum area
if(originalArea < 200 ):
continue #too small!
kMinTargetWidth = 20
kMaxTargetWidth = 300
kMinTargetHeight = 6
kMaxTargetHeight = 60
if(w < kMinTargetWidth or w > kMaxTargetWidth):
continue
if(h < kMinTargetHeight or h > kMaxTargetHeight):
continue
#Ratio of width to height
#ratio should be 1 or greater
#target is 43 cm tall, 100 cm wide
ratio = float(w) / float(h)
if(ratio < 1.3):
continue #skip
kMinFullness = .50
kMaxFullness = .95
fullness = originalArea / area
if(fullness < kMinFullness or fullness > kMaxFullness):
continue
if(cv2.isContourConvex(cnt) == True):
continue
Я надеялся, что вогнутая природа этих трапециевидных объектов будет отличаться от прямоугольников / квадратов. Теперь я думаю, что мне следует как-то проверить боковой угол.
Или взять выпуклый корпус и найти угловые точки. Но я чувствую, что в OpenCV уже есть что-то подобное? По сути, я спрашиваю, чего мне не хватает!