04.OpenCV-GUI-绘图

 

本文主要介绍opencv中的绘图函数:画线,圆,椭圆,多边形和添加文本

将会学习到这些函数:cv2.line(),cv2.circle(),cv2.rectangle() ,cv2.ellipse() ,cv2.putText() 等。

代码
上面所有的这些绘图函数需要设置下面这些参数:
  • img:你想要绘制图形的那幅图像。
  • color:形状的颜色。以 RGB 为例,需要传入一个元组,例如: (255,0,0 )代表蓝色。对于灰度图只需要传入灰度值。
  • thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.
  • linetype:线条的类型,8 连接,抗锯齿等。默认情况是 8 连接。cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。

画线
  要画一条线,你只需要告诉函数这条线的起点和终点。我们下面会画一条从左上方到右下角的蓝色线段。

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
cv2.line(img,(0,0),(511,511),(255,0,0),5)

cv2.line()参数分别是图片名称,起点坐标,终点坐标,颜色(255,0,0)代表蓝色,和粗细。

画矩形  

cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

参数分别是图片名称,左上坐标,右下坐标,颜色(255,0,0)代表蓝色,和粗细。

画圆
  要画圆的话,需要指定圆形的中心点坐标和半径大小。我们在上面的矩形中画一个圆。

cv2.circle(img,(447,63), 63, (0,0,255), -1)

画椭圆
  中心点的位置坐标,下一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是 0跟360,就是整个椭圆。查看cv2.ellipse() 可以得到更多信息。下面的例子是在图片的中心绘制半个椭圆。

cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

 画多边形
  画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。这个数组的数据类型必须为 int32。
  这里画一个黄色的具有四个顶点的多边形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))

 # 这里 reshape 的第一个参数为 -1, 表明这一维的长度是根据后面的维度的计算出来的。
注意:如果第三个参数是 False,我们得到的多边形是不闭合的(首尾不相连)。
注意:cv2.polylines() 可以被用来画很多条线。只需要把想要画的线放在一个列表中,将这个列表传给函数就可以了。每条线都会被独立绘制。这会比用cv2.line() 一条一条的绘制要快一些。

 在图片上添加文字
  要在图片上绘制文字,你需要设置下列参数:
  • 你要绘制的文字
  • 你要绘制的位置
  • 字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
  • 字体的大小
  • 文字的一般属性如颜色,粗细,线条的类型等。为了更好看一点推荐使用linetype=cv2.LINE_AA。
在图像上绘制白色的 OpenCV。

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

警 告:所 有 的 绘 图 函 数 的 返 回 值 都 是 None, 所 以 不 能 使 用 img =cv2.line(img,(0,0),(511,511),(255,0,0),5) 。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值