【OpenCV 例程300篇】215. 基于多段线绘制近似椭圆

OpenCV 例程200篇 总目录


【youcans 的 OpenCV 例程300篇】215. 基于多段线绘制近似椭圆


如果需要对椭圆渲染进行更多控制,或者绘制粗略的椭圆边界,可以使用 cv.ellipse2Poly 检索曲线,然后使用多段线进行渲染或使用fillPoly进行填充。

函数原型:

cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta[,]) → pts

参数说明:

  • img:输入输出图像,允许单通道灰度图像或多通道彩色图像
  • center:椭圆中心点的坐标,(x, y) 格式的元组
  • axes:椭圆半轴长度,(hfirst, hsecond) 格式的元组-
  • angle: 椭圆沿 x轴方向的旋转角度(角度制,顺时针方向)
  • arcStart:椭圆弧的起始角度(角度制)
  • endAngle:椭圆弧的终止角度(角度制)
  • delta:与下一线段之间的角度,用于控制近似精度,角度越小越接近椭圆
  • pts:输出向量,逼近椭圆弧的多段线顶点坐标的数组

    # A4.6 基于多段线绘制近似椭圆
    img = np.ones((400, 600, 3), np.uint8)*224

    cx, cy = 100, 150
    halfAxesLength = (70, 40)
    angle, startAng, endAng = 30, 0, 360
    delta = [10, 20, 30, 40]
    for i in range(len(delta)):
        color = (i*60, i*60, 255-i*60)
        pts = cv.ellipse2Poly((cx+140*i, cy), halfAxesLength, angle, startAng, endAng, delta[i])  # (351,2)
        points = np.array(pts)
        cv.polylines(img, [points], True, color, thickness=1)  # 绘制近似多边形
        points[:,1] += 160
        cv.fillPoly(img, [points], color)  # 绘制填充近似多边形
        text1 = "delta={}".format(delta[i])
        text2 = "num={}".format(pts.shape)
        cv.putText(img, text1, (140*i+25, 30), cv.FONT_HERSHEY_SIMPLEX, 0.5, 255)
        cv.putText(img, text2, (140*i+25, 50), cv.FONT_HERSHEY_SIMPLEX, 0.5, 255)
        print(pts.shape, points.shape)

    plt.figure(figsize=(9, 6))
    plt.title("Polygon approximated ellipse"), plt.axis('off')
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.show()

在这里插入图片描述



【本节完】

版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125468099)
Copyright 2022 youcans, XUPT
Crated:2022-6-26
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

210. 绘制直线也会有这么多坑?
211. 绘制垂直矩形
212. 绘制倾斜的矩形
213. 绘制圆形
214. 绘制椭圆的参数详解
215. 基于多段线绘制近似椭圆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youcans_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值