绘制直线

cv2.line(img,pt1,pt2,color,thickness,lineType,shift)

  • img:绘制的图片对象
  • pt1:起始点
  • pt2:终止点
  • color:颜色,用bgr形式表示,(0,0,255)表示红色
  • thickness:线宽
  • lineType:线的类型,与plt中的线类型不一样,这里主要是指毛边
  • shift:缩放比例,一半不做变化

绘制矩形

cv2.rectangle(img,pt1,pt2,color,thickness,lineType,shift)

  • 参数和画直线一样,相当于画了一条对角线,根据对角线来画出矩形

绘制圆

cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])

  • 相同的参数含义与直线一样,在这里不在声明
  • center:圆心的坐标
  • radius:圆的半径

绘制椭圆

cv2.ellipse(img,中心点,长宽的一半,偏移角度,从哪个角度开始,到哪个角度结束…)

  • 长宽的一半以元祖的形式传入,如(100,50),第一个参数是长,第二个参数是宽

绘制多边形

无填充多边形:

cv2.polylines(img,pts,isColsed,color,thickness,[,lineType[,shift]]])

  • 上面一样的参数就不再介绍
  • pts:多边形的点集,注意维度,必须是int32位
    • eg:pts = np.array([[(300,10),(150,100),(450,100)]],np.int32)
  • isColsed:是否闭合,即第一个点是否与最后一个点相连

填充多边形

cv2.fillPoly()

  • 参数与上面有所不同,没有isColsed,填充多边形一定闭合
  • 也没有线宽thickness和类型lineType
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    """
    @Project :Opencv学习
    @File :绘制图形.py
    @IDE :PyCharm
    @Author :咋
    @Date :2023/1/12 15:57
    """
    import cv2
    import numpy as np
    # 创建窗口
    cv2.namedWindow("image",cv2.WINDOW_NORMAL)
    cv2.resizeWindow("image",(640,480))
    image = cv2.imread("image.jpg")
    # 画直线
    cv2.line(image,(10,100),(40,320),(0,0,225),5,16)
    # 画矩形
    cv2.rectangle(image,(320,40),(420,200),(20,20,20),5,16)
    # 画圆
    cv2.circle(image,(500,500),100,(100,200,200),5,16)
    # 画椭圆
    cv2.ellipse(image,(1000,1000),(200,100),0,0,360,[134,234,234],5,16)
    # 画多边形
    pts_1 = np.array([[(223,456),(345,643),(563,568),(893,297)]],np.int32) # 注意维度,以及32位无符号的整数
    cv2.polylines(image,pts_1,True,(123,147,189),5,16)

    # 画填充多边形
    pts_2 = np.array([[(323,466),(145,143),(963,568),(893,397)]],np.int32) # 注意维度,以及32位无符号的整数
    cv2.fillPoly(image,pts_2,(223,143,89))
    cv2.imshow("image",image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    image.png