天天看点

7、OpenCV 画线段 —— cv.line()0、格式1、功能2、输入3、输出4、示例5、备注

目录

  • 0、格式
  • 1、功能
  • 2、输入
  • 3、输出
  • 4、示例
  • 5、备注

0、格式

  • line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])

1、功能

  • 在图像

    img

    上的两点

    pt1

    ,

    pt2

    之间画一条线段

2、输入

  • img

    :要在上面画线段的图像
  • pt1

    :线段的第 1 个点
  • pt2

    :线段的第 2 个点
  • color

    :线段的颜色
  • thickness

    :线段的粗细
  • lineType

    :线段的类型
  • shift

    :坐标精确到小数点后第几位

3、输出

  • img

    :画完线段的输入图像

4、示例

  • 代码
# 导入 OpenCV
import cv2 as cv

# 读取图像
imgBgr = cv.imread(r'/home/work/0/OpenCV/0/img/Ta152.jpg')
print('imgBgr.shape:', imgBgr.shape)        # (768, 1024, 3)

# 获取图像角点坐标
ptLeftUp = (0, 0)
ptRightUp = (imgBgr.shape[1], 0)
ptRightDown = (imgBgr.shape[1], imgBgr.shape[0])        # (h, w) -> (x, y)
ptLeftDown = (0, imgBgr.shape[1])

# 画线段
imgRet = cv.line(imgBgr, ptLeftUp, ptRightDown, (0, 255, 0), 3)

# 比较输入图像和返回图像的内存地址
print('id(imgBgr) == id(imgRet):', id(imgBgr) == id(imgRet))        # True

# 显示图像
cv.imshow('imgBgr', imgBgr)
cv.imshow('imgRet', imgRet)
idKey = cv.waitKey(0)
if idKey == '27':       # 27 为 ESC 键对应的 ASCII 码
    cv.destroyAllWindows()
           
  • 效果
    7、OpenCV 画线段 —— cv.line()0、格式1、功能2、输入3、输出4、示例5、备注

5、备注

  • pt1

    pt2

    的中对应的坐标顺序为

    (x1, y1)

    (x2, y2)

  • 超出图像范围的线段会被截断
  • 返回图像和输入图像是同一张图