заполнить многоугольник его четырьмя вершинами

У меня есть 4 точки, которые идентифицируют многоугольник в изображении, этот многоугольник является более или менее прямоугольником. Я хочу заполнить этот многоугольник. я пыталсяfillConvexPolyно он заполняет треугольник тремя из этих точек. Почему?

img = cv2.imread('image_4.png')
points = [[ 903  192]
          [ 880  390]
          [1230  152]
          [1157  433]]
cv2.fillConvexPoly(img, points, 0, 16)

Кроме того, я пытался drawContoursно у меня нет контуров. Существуют ли какие-либо функции, которые создают линию, проходящую через все эти точки, создавая многоугольник, похожий на прямоугольник?

Итак, как я могу это решить?

1 ответ

Решение

Я не вижу проблем с вашим кодом.

Проверьте это (см. Порядок точек):

img = np.ones([600, 1500], np.uint8) * 255
points = np.array([[903, 192], [880, 390], [1157, 433], [1230, 152]], np.int64)
cv2.fillConvexPoly(img, points, 0, cv2.LINE_8)
# plt.imshow(img)
# cv2.imwrite('polygon.jpeg', img)

В результате должно получиться вот такое изображение:

Попробуйте прочитать изображение как оттенки серого:

img = cv2.imread('image_4.png', cv2.IMREAD_GRAYSCALE)
Другие вопросы по тегам