0

我有 4 个点将多边形识别为图像,这个多边形或多或少是一个矩形。我想填充这个多边形。我一直在尝试fillConvexPoly,但它用其中的 3 个点填充了一个三角形。为什么?

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

另外,我一直在尝试drawContours,但我没有轮廓。是否有任何函数可以创建一条穿过所有这些点的线,从而创建一个看起来像矩形的多边形?

那么,我该如何解决呢?

4

1 回答 1

0

我认为您的代码没有任何问题。

测试这个(见点的顺序):

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)
于 2020-06-26T10:16:30.463 回答