OpenCV 学习笔记(五)—— 绘图

绘图

  • 本节主要介绍如何使用 OpenCV 中的绘图功能。

一. 学习目标

  • 学会使用 OpenCV 绘制不同的几何形状
  • 学习函数 cv.line(), cv.circle(), cv.rectangle(), cv.ellipse(), cv.putText()

二. 参数

  • 在上述的函数中,你将看到一些常见的参数,如下所示:
    • img :要绘图的图片
    • color :要添加形状的颜色。对于 BGR 图像而言,以元组的方式传递,如蓝色 (255, 0, 0) 。对于灰度图像而言,仅仅传递灰度值就可以了。
    • thickness :线或圆等形状的粗细。如果对于封闭的图像(如圆),其 thickness 值为 -1 ,表示填充形状。默认值之为 -1 。
    • lineType:线的类型,是否为 8-connected, anti-aliased 线等等。默认为 8-connected。

三. 画直线

  • 要绘制一条直线,我们需要确定直线的开始坐标以及结束坐标。
  • 下面我们绘制一条从左上角到右下角的蓝线,代码如下:
    import cv2 as cv
    import numpy as np
    
    img = np.zeros((512, 512, 3), dtype=np.uint8)  # 创建黑色背景图
    cv.imshow("img", img)   # 显示原图
    
    result = cv.line(img, (0 ,0), (511, 511), (0, 255, 0), 1)   # 在背景图上绘制线条
    cv.imshow("result", result)         # 显示处理结果图
    
    cv.waitKey(0)       # 等待按键
    cv.destroyAllWindows()  # 摧毁窗口
    
  • 运行结果:
    draw_line

四. 绘制矩形

  • 要绘制矩形,我们需要确定矩形矩形的左上角和右下角坐标。
  • 下面,我们来绘制一个填充的矩形框,代码如下:
    import numpy as np
    import cv2 as cv
    
    # 创建一个黑色图框
    img = np.zeros((512,512,3), np.uint8)
    
    # 绘制一个蓝色的矩形框
    cv.rectangle(img, (100, 100), (200, 200), (255, 0, 0), -1)
    
    cv.imshow("rectangle", img)         # 显示图片
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    
  • 运行结果:
    draw_rectangle

五. 绘制圆形

  • 绘制圆形,我们需要确定圆心点的坐标以及圆的半径
  • 下面,我们来绘制一个圆形,代码如下:
    import cv2 as cv
    import numpy as np
    
    # 创建一个黑色图框
    img = np.zeros((512,512,3), np.uint8)
    
    # 绘制一个红色的圆
    cv.circle(img, (120, 120), 63, (0,0,255), -1)
    
     cv.imshow("circle", img)         # 显示图片
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    
  • 运行结果:
    draw_circle

六. 绘制多边形

  • 要绘制一个多边形,我们需要确定各个顶点的位置,然后将各个顶点的位置变成 Rows * 1 * 2 的形状, Rows 是顶点的数目,其中数据类型要为 int32
  • 下面我们就用具体的代码,来绘制一个多边形
    import cv2 as cv
    import numpy as np
    
    # 确定两个背景板,形成对比
    img = np.zeros((512,512,3), np.uint8)
    
    # 确定 4 个点,四个点按照顺序连接成一个封闭图形
    pts = np.array([[50,15],[120,30],[170,50],[30,100]], np.int32)
    pts = pts.reshape((-1,1,2))         # 改变顶点 shape
    cv.polylines(img, [pts], True, (0,0,255))
    
    cv.imshow("polygon", img)
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    
  • 运行结果:
    draw_polygon

七. 添加文本

  • 在添加文本的时候,需要指定下列参数:
    • 要添加的文本(不支持中文)
    • 文本的位置
    • 字体类型
    • 字体大小
  • 字体类型请查看:字体类型
  • 下面就用具体的代码,演示如何在图片上添加文本 “OpenCV” :
    import cv2 as cv
    import numpy as np
    
    img = np.zeros((512,512,3), np.uint8)
    
    font = cv.FONT_HERSHEY_SIMPLEX  # 确定字体类型
    cv.putText(img, 'OpenCV', (10,400), font, 4, (255,255,255), 2 , cv.LINE_AA)
    
    cv.imshow("text", img)      # 图片显示
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    
  • 运行结果:
    add_text

八. 结语

  • 如果其中有不对的地方或是需要改进的地方,请指正。
  • 联系方式 email:lwl510ll@163.com 。
  • 本文到这就结束了,谢谢大家观看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值