跳转至

绘制直线

概要

讲解了如何使用OpenCV在图片中绘制直线.

keywords OpenCV 直线绘制

绘制直线(cv2.line)

# 绘制一根红色的线  宽度为3
cv2.line(img=canvas, pt1=(300, 0), pt2=(0, 300), color=COLOR_MAP["red"], thickness=3)

参数说明

  • img 图片(画布)

  • pt1 直线起始端坐标 (x, y)

  • pt2 直线结束端坐标 (x, y)

  • color 颜色

  • thickness 线宽

当然我们也可以简写

cv2.line(canvas, (300, 0), (0, 300), COLOR_MAP["red"], 3)

可是一旦参数变多, 你就不知道哪个是哪个了, 一个规范的做法还是要加上参数名。

演示样例

draw_line.png

src/draw_line.py

import cv2
import numpy as np

# 预设几种颜色 B
COLOR_MAP = {
    "green": (0, 255, 0),
    "red": (0, 0, 255)
}

'''
初始化一个彩色的画布
颜色为BGR色彩空间
'''
def InitCanvas(width, height, color=(255, 255, 255)):
    canvas = np.ones((height, width, 3), dtype="uint8")
    canvas[:] = color
    return canvas

# 初始化一个空画布 300×300 三通道 背景色为黑色 
canvas = InitCanvas(300, 300)

# pt1 线段起始点, pt2 线段终止点
# 在画布canvas上, 从(0,0) 到(300,300) 绘制一根绿色直线
cv2.line(canvas, pt1=(0, 0), pt2=(300, 300), color=COLOR_MAP["green"])

# 颜色变为红色 BGR
red = (0, 0, 255)
# 绘制一根红色的线  宽度为3
cv2.line(img=canvas, pt1=(300, 0), pt2=(0, 300), color=COLOR_MAP["red"], thickness=3)
cv2.imshow("Canvas", canvas)

cv2.imwrite("draw_line.png", canvas)

cv2.waitKey(0)