Итак, вот моя проблема, мне нужно иметь возможность определять и подсчитывать формы для проекта, и у меня возникла одна небольшая трудность.Я только начал возиться с OpenCV и не смог найти лучшего способа определения кругов без использования команды else.Например, если в кадре есть что-то еще, не являющееся явно одной из других фигур, он обнаружит его в виде круга (и в идеале я хотел бы иметь возможность игнорировать эти объекты в кадре.) Я не уверенесли это влияет на что-либо, кроме этой части кода, я использую адаптивное пороговое значение и размытие по Гауссу, чтобы улучшить обработку.
TLDR: я пытаюсь найти способ идентифицировать круги без использования оператора else,
def detect(self, c):
# initialize the shape name and approximate the contour
shape = "unidentified"
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.04 * peri, True)
# if the shape is a triangle, it will have 3 vertices
if len(approx) == 3:
shape = "triangle"
self.s2 = self.s2 + 1
# if the shape has 4 vertices, it is either a square or
# a rectangle
elif len(approx) == 4:
# compute the bounding box of the contour and use the
# bounding box to compute the aspect ratio
(x, y, w, h) = cv2.boundingRect(approx)
ar = w / float(h)
# a square will have an aspect ratio that is approximately
# equal to one, otherwise, the shape is a rectangle
if 0.75 <= ar <= 1.35:
shape = "square"
self.s3 = self.s3 + 1
else:
shape = "rectangle"
self.s4 = self.s4 + 1
# otherwise, we assume the shape is a circle
else:
shape = "circle"
self.s5 += 1