У меня есть несколько несовершенных прямоугольников на изображении, мне нужен набор координат для каждого прямоугольника в python, используя opencv
Я пробовал обнаружение краев Canny и использовал findContours, но он дает больше координат, чем требуется, потому что у прямоугольников нет прямых линий
Я читал похожие вопросы, но не получаю правильных результатов. Можете ли вы предоставить решение с кодом?
оригинальное изображение
После обнаружения края Canny
![Canny edge detection](https://i.stack.imgur.com/dN64O.png)
Как получить только внутренние границы прямоугольников от Canny Edges? Поскольку для каждого прямоугольника есть двойная граница, это дает больше прямоугольников, чем требуется.
image = cv2.imread(OUTPUT_FILE)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.blur(gray, (5,5))
kernel = np.ones((5, 5), np.uint8)
closing = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)
edged = cv2.Canny(closing, 30, 200)
cv2.imshow("Canny", edged)
contours, hierarchy = cv2.findContours(edged, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
print(len(contours))
for c in contours:
rect = cv2.minAreaRect(c)
box = cv2.boxPoints(rect)
for p in box:
pt = (p[0],p[1])
plt.scatter(p[0],p[1])
plt.show()