第三章-OpenCV基础-8-绘图函数

前置内容

这篇内容不是本书内容,但后续用的到,特做记录。

使用OpenCV中不可避免需要用到各种绘图功能,比如绘制人脸库、显示人脸识别信息,那就需要用到OpenCV的绘图函数,这些函数包括cv2.line(),

cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText()等等。

上面函数需要用到的参数说明:

  • img : 绘制图像的画布(图像)
  • color : 形状的颜色,RGB标识为(B,G,R)的元祖,灰度图只传入灰度值即可
  • thickness : 线条的粗细,封闭图像设置为-1,负责显示图形线条粗细
  • linetype : 线条类型,有8连接/抗锯齿等,默认为8连接。cv2.LINE_AA为抗锯齿,图形会变的平滑
  • 画直线

只要知道起始2点的坐标即可。

cv2.line(绘制图层,(起点x,起点y),(终点x,终点y),(b,g,r),粗细大小)

  • 画圆

确定圆形原点和半径即可确定圆的位置。

cv2.circle(绘制图层,(圆心x,圆心y),半径,(b,g,r),划线粗细)

  • 画矩形

之前左上角和右下角就能确定矩形的大小。

cv2.rectangle(绘制图层,(左上角x,左上角y),(右下角x,右下角y),(b,g,r),划线粗细)

  • 画椭圆

cv2.ellipse(绘制图层,(椭圆圆心x,椭圆圆心y),(长轴长,短轴长),椭圆整体旋转角度,椭圆绘制开始角度,椭圆绘制停止角度,颜色,划线粗细)

划线粗细为-1时表示实心椭圆,如果长短轴一样就变成圆形,再控制绘制角度可以绘制半圆

  • 画不规则图像

通过一系列的点的集合来确定整个图形的大小及样式。

cv2.polylines(绘制图层,点集,是否闭合,(b,g,r),划线粗细)

  • 绘制文字

cv.putText(绘制图层,内容,(文字左下角x,文字左下角y),字体样式,字体大小,字体颜色,线条宽度)

举例程序如下:

canvas = np.zeros((600, 600, 3), np.uint8)  # 全0的黑色背景
# canvas = np.ones((600, 600, 3), np.uint8) * 255  # 全白背景

# 绘制直线
cv.line(canvas, (0, 0), (200, 90), (255, 0, 0), 5)  # cv2.line(绘制图层,(起点x,起点y),(终点x,终点y),(b,g,r),粗细大小)

# 绘制矩阵
cv.rectangle(canvas, (250, 250), (300, 430), (0, 255, 255),
             2)  # cv2.rectangle(绘制图层,(左上角x,左上角y),(右下角x,右下角y),(b,g,r),划线粗细) 划线粗细为-1时表示实心矩阵

# 绘制圆形
cv.circle(canvas, (400, 400), 50, (0, 0, 255), -1)  # cv2.circle(绘制图层,(圆心x,圆心y),半径,(b,g,r),划线粗细) 划线粗细为负数时表示实心圆

#绘制椭圆
cv.ellipse(canvas, (256, 256), (100, 70), 30, 0, 360, 255, -1)#cv2.ellipse(绘制图层,(椭圆圆心x,椭圆圆心y),(长轴长,短轴长),椭圆整体旋转角度,椭圆绘制开始角度,椭圆绘制停止角度,颜色,划线粗细)划线粗细为-1时表示实心椭圆

# 绘制其他边形
pts = np.array([[30, 50], [30, 250], [130, 250], [130, 350], [230, 350]], np.int32)
cv.polylines(canvas, [pts], True, (100, 100, 100), 1)  # cv2.polylines(绘制图层,点集,是否闭合,(b,g,r),划线粗细)

# 绘制文字 cv.putText(绘制图层,内容,(文字左下角x,文字左下角y),字体样式,字体大小,字体颜色,线条宽度)
cv.putText(canvas, "HelloOpenCV", (100, 100), cv2.FONT_HERSHEY_TRIPLEX, 2, (66, 66, 66), 3)
cv.imshow("Canvas", canvas)
cv.waitKey()
cv.destroyAllWindows()

运行如下:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr_Sun_01

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

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

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

打赏作者

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

抵扣说明:

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

余额充值