【问题标题】:problem for draw polygon in opencv python在opencv python中绘制多边形的问题
【发布时间】:2021-10-20 09:52:34
【问题描述】:

我有一个简单的问题 但我不知道原因

我确实在点 x1-y1 和 x2-y2 之间画了两条线,并且

现在我想在这些点之间绘制填充多边形

这是(部分代码):

    for i in range(0, len(reverse_output), 2):
    x1, y1 = reverse_output[i]
    x2, y2 = reverse_output[i + 1]

    x1 = int(x1)
    y1 = int(y1)
    x2 = int(x2)
    y2 = int(y2)
    pts = np.array([(x1, y1), (x2, y2), (x2, y2), (x1, x2)])

    color = [255, 255, 0] if i < 1 else [0, 0, 255]
    cv2.fillPoly(overlay_img, [pts], (255,0,0))
    cv2.line(overlay_img, (x1, y1), (x2, y2), color, 2)

线条可以画得很好,但是当我在这两条线之间绘制多边形时会出现这个问题

我喜欢只在两条画线之间画这个蓝色多边形 我认为问题出在(pts) 但我无法解决它 任何帮助都很棒 谢谢

【问题讨论】:

    标签: python opencv polygon


    【解决方案1】:

    如果要画三角形pts应该是:

    pts = np.array([(x1, y1), (x2, y2), (x1, y2)])
    

    【讨论】:

    • 谢谢,不,它不是三角形,它有 4 个点
    • 对不起@payam 我不明白,你能上传一张你从reverse_output中提取的点在哪里吗?
    • @payam 是的——虽然有 4 对坐标,但您的代码中的第二个和第三个条目是相同的:(x2, y2)。 3 个不同的点 -> 三角形。
    • 感谢carlos,但是完整的代码很长,x1和y1是行首坐标,x2和y2是行尾坐标,如果你看代码,你可以看到,我的代码可以如果 (i
    • 如果你有 2 行你应该有 4 个点,请用所有需要的变量修改你的代码。
    【解决方案2】:

    谢谢大家,我自己找到了解决方案

    pts1 = (int(reverse_output[0][0]), int(reverse_output[0][1]))
    pts2 = (int(reverse_output[1][0]), int(reverse_output[1][1]))
    pts3 = (int(reverse_output[2][0]), int(reverse_output[2][1]))
    pts4 = (int(reverse_output[3][0]), int(reverse_output[3][1]))
    
    pts = np.array([pts1, pts2, pt3, pts4])
    
    cv2.fillPoly(overlay_img, [pts], (180,0,0))
    

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      相关资源
      最近更新 更多