用四个顶点填充一个多边形
fill a polygon with its four vertix
我有 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
,但我没有轮廓。是否有任何函数可以创建一条穿过所有这些点的线,从而创建一个看起来像矩形的多边形?
那么,我该如何解决呢?
我没有发现你的代码有任何问题。
测试这个(看点的顺序):
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)
我有 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
,但我没有轮廓。是否有任何函数可以创建一条穿过所有这些点的线,从而创建一个看起来像矩形的多边形?
那么,我该如何解决呢?
我没有发现你的代码有任何问题。
测试这个(看点的顺序):
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)