Я использую этот код для обнаружения четырех углов прямоугольника, но из-за волн пикселей я получаю результат ниже, что означает, что я получаю много очков, как я могу получить только 4 угла (topRight, topLeft, bottomRight, bottomLeft ), а не все пиксельные волны?
Примечание я использую opencv с python
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
low_red1 = np.array([0,70,25])
high_red1 = np.array([10,255,255])
low_red2 = np.array([160,70,25])
high_red2 = np.array([180,255,255])
mask0 = cv2.inRange(hsv, low_red1, high_red1)
mask1 = cv2.inRange(hsv, low_red2, high_red2)
mask = mask0+mask1
cv2.imshow("mask", mask)
contours,_ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,200,0),1)
for c in contours:
approx = cv2.approxPolyDP(c, 0.009 * cv2.arcLength(c, True), True)
cv2.drawContours(img, [approx], 0, (255, 0, 0), 1)
n = approx.ravel()
k = 0
for j in n :
if(k % 2 == 0):
x = n[k]
y = n[k + 1]
cv2.circle(img, (x,y), 3, (255, 0, 0), -1)
k = k+1
cv2.imshow("corners", img)
вывод