заполнить многоугольник его четырьмя вершинами
У меня есть 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)