【问题标题】:Triangle Filling in opencvopencv中的三角形填充
【发布时间】:2019-01-23 07:11:29
【问题描述】:

我们在opencv中有矩形填充,圆形和椭圆填充,但是任何人都可以说如何使用opencv,python在图像中填充三角形。

【问题讨论】:

  • 那么你尝试了什么?我的第一个想法是从一个正方形开始并从那里开始工作,例如,可以给出一个正方形,然后可以在另一个正方形上旋转第二个正方形以形成直角三角形,或者您可以将两个旋转的三角形放在在三角形中制作不同的角度
  • 我们还有cv2.fillpoly()的功能,可以用来绘制任何多边形。

标签: python opencv geometry ellipse


【解决方案1】:

填充三角形最简单的解决方案是使用 OpenCV 中的绘制轮廓函数。假设我们知道三角形的三个点为“pt1”、“pt2”和“pt3”:

import cv2
import numpy as np

image = np.ones((300, 300, 3), np.uint8) * 255

pt1 = (150, 100)
pt2 = (100, 200)
pt3 = (200, 200)

cv2.circle(image, pt1, 2, (0,0,255), -1)
cv2.circle(image, pt2, 2, (0,0,255), -1)
cv2.circle(image, pt3, 2, (0,0,255), -1)

我们可以把这三个点放到一个数组中,画成轮廓:

triangle_cnt = np.array( [pt1, pt2, pt3] )

cv2.drawContours(image, [triangle_cnt], 0, (0,255,0), -1)

cv2.imshow("image", image)
cv2.waitKey()

这是输出图像。干杯。

【讨论】:

    【解决方案2】:

    你可以画一个多边形然后填充它,就像@ZdaR 说的那样。

    # draw a triangle
    vertices = np.array([[480, 400], [250, 650], [600, 650]], np.int32)
    pts = vertices.reshape((-1, 1, 2))
    cv2.polylines(img_rgb, [pts], isClosed=True, color=(0, 0, 255), thickness=20)
    
    # fill it
    cv2.fillPoly(img_rgb, [pts], color=(0, 0, 255))
    # show it
    plt.imshow(img_rgb)
    

    【讨论】:

    • 是否有办法绘制不透明/半透明三角形?谢谢!
    • @GbG 我认为您可以在 fillPoly 方法上做到这一点。不太确定是否可以使用 RGBA 作为颜色,但可以作为开始的好方法。
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多