Обратитесь к Этот код C++. Я пытаюсь изменить Python, чтобы сделать то же самое, но я застрял на цикл для поиска aspect_ratio. Я не понимаю, как получить минимум и максимумширина и рост из RotatedRect в python в качестве альтернативы RotatedRect из C++ в Python - cv2.boxPoints
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('C:/Users/Zeeesh/Desktop/1.jpg', cv2.IMREAD_GRAYSCALE)
ret,thresh = cv2.threshold(img,200,255,0)
img1,contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
out = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
for contour in contours:
rect = cv2.minAreaRect(contour)
(x, y), (width, height), angle = rect
aspect_ratio = min(width, height) / max(width, height)
thresh1 = 0.2
if (aspect_ratio > thresh1):
print('Straight Line')
for pt in contour:
cv2.drawContours(out, [pt], 0,255,0)
else:
print('Curve')
for pt in contour:
cv2.drawContours(out, [pt], 0,0,255)
plt.imshow(out)
Вы можете найти width
и height
повернутого прямоугольника с помощью:
rect = cv2.minAreaRect(contour)
(x, y), (width, height), angle = rect
Тогда соотношение сторон будет:
aspect_ratio = min(width, height) / max(width, height)
Я отредактировал ваш код в соответствии со своей проблемой, но мне это не помогает
приведенный выше код редактируется. Помогите, пожалуйста
Ширина и высота указаны в пикселях?
@Fra да, конечно
Спасибо большое за вашу помощь. Я пытаюсь найти кривую в этом Это изображение, но это дает мне ошибку.