[python opencv 计算机视觉零基础到实战] 十七、深入ellipse方法

1_bit 2021-01-12 21:31:51 4861

一、学习目标

  1. 了解长轴和短轴参数
  2. 了解旋转角度参数
  3. 了解起始角度参数
  4. 了解终止角度参数

目录

[python opencv 计算机视觉零基础到实战] 一、opencv的helloworld
[python opencv 计算机视觉零基础到实战] 二、 opencv文件格式与摄像头读取
.
.
.
[python opencv 计算机视觉零基础到实战] 十六、用opencv画画

二、深入了解OpenCV的ellipse方法

2.1 纵横

椭圆的绘制方法在上一节中我们已经知道了是使用ellipse,ellipse的函数原型如下,为了清晰认识ellipse方法,在此使用了中文代替参数:

ellipse(image, 椭圆的中心坐标, 长轴和短轴, 旋转角度, 起始角度, 终止角度, color ,粗细)

我们依旧沿用上一节的代码,如下:

import cv2
import numpy as np

img=np.zeros((400,400,3), np.uint8)
cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)

cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()

我们的ellipse方法如下:

cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)

其中(200, 200)为圆心坐标,(170, 50)为长短轴,0, 0为旋转角度以及起始角度,360为终止角度。颜色和粗细分别为(255, 255, 255)以及3.我们我们先查看当前绘制出来的图形是什么样子的,结果如下:

那我们更改(170, 50)为(50, 170)呢?结果如下:

再次我们很清楚了(170, 50)中的170为横向长度,50为纵向长度,我们还可以将170,50改成170,10,这个时候应该可以更明显的看的出效果,应该170长度不变,10变得更扁了。结果如下:

我们更改170为100,应该它的横向长度也会变短,将170的10改为70的10,结果如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)

我们继续按照以上代码更改数据来深入的理解ellipse方法。这次我们更改选择角度,代码如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)

旋转角度

将第一个0,旋转角度改为10,看看有什么效果:

cv2.ellipse(img, (200, 200), (70, 10), 10, 0, 360, (255, 255, 255), 3)


改为-10,结果如下:

这个时候可以得出,这个该旋转角度如图所示,是指在绘制这个圆的时候的选择方向:

我们现在将绘制角度0改为180:

cv2.ellipse(img, (200, 200), (70, 10), 0, 180, 360, (255, 255, 255), 3)

得到的结果如下:

绘制角度

再将180改为90,结果如下:
这个时候得知,这个绘制角度是指原型在右下角与水平形成的角的起始绘制角度位置,如下图所示:

起始绘制角度

这个时候就很清楚这个起始绘制角度的用法了。接下来我们查看终止角度的用法。我们将起始绘制角度置零,并且将终止角度改成180,代码如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 180, (255, 255, 255), 3)

结果如下:

这时再将该结束绘制角度更改为270,结果如下:

这个时候就很明白了,原型与水平线形成的平角开始,顺时针绘制,绘制180则到180度位置停止绘制,绘制270则到270度开始停止,如下图所示:

何绘制半个圆

那如何绘制半个圆呢?这个很简单,只需要保持横纵距离长短一致,并且绘制的角度为180即可:

cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), 1)

可是这个时候的半圆并不好看:

感觉只有一个弧,那怎么办呢?很简单,我们进行填充就可以了,如下:

cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), -1)

这个时候将线段的长度更改为负数就可以了,结果如下:

三、总结

  1. 了解了长轴和短轴参数跟纵横的关系
  2. 了解旋转角度参数绘制圆形
  3. 了解起始角度参数绘制圆形
  4. 了解终止角度参数绘制圆形
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
1_bit
红包 14 2 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
1_bit
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区