Python----OpenCV(图像的绘制——绘制直线,绘制矩形,绘制圆形,绘制多边形)

发布于:2025-06-15 ⋅ 阅读:(70) ⋅ 点赞:(0)

一、绘制直线

cv2.line(image, pt1, pt2, color, thickness)
参数 说明
image 目标图像。
pt1 线段起点,格式为 (x, y)。
pt2 线段终点,格式为 (x, y)。
color 线条颜色,格式为 (B, G, R)。
thickness 线条的粗细,默认值为 1。
import cv2
import numpy as np

img = np.zeros((500, 500, 3), dtype=np.uint8) # 创建一个500x500像素的黑色图片,3表示彩色图片(BGR),np.uint8表示像素值为8位无符号整数
cv2.line(img, (100, 100), (300, 300), (0,0,255), 5) # 在图片上画一条直线,起点(100,100),终点(300,300),颜色为灰色(125,125,125),线宽为5
cv2.imshow('img', img) # 显示图片,窗口名为'img'
cv2.waitKey(0) # 等待按键,0表示无限等待,直到用户按下任意键

二、绘制矩形

cv2.rectangle(image, pt1, pt2, color, thickness)
参数 说明
image 目标图像。
pt1 线段起点,格式为 (x, y)。
pt2 线段终点,格式为 (x, y)。
color 线条颜色,格式为 (B, G, R)。
thickness 线条的粗细,默认值为 1。
import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8) # 创建一个400x400像素的黑色图片,3表示彩色图片(BGR),np.uint8表示像素值为8位无符号整数

# 绘制一个绿色矩形
cv2.rectangle(image, (100, 100), (300, 200), (0, 255, 0), thickness=3) # 在图片上画一个矩形,左上角坐标(100,100),右下角坐标(300,200),颜色为绿色(0,255,0),线宽为3

cv2.imshow("Rectangle", image) # 显示图片,窗口名为"Rectangle"
cv2.waitKey(0) # 等待按键,0表示无限等待,直到用户按下任意键
cv2.destroyAllWindows() # 销毁所有OpenCV创建的窗口

三、绘制圆形

cv2.circle(image, center, radius, color, thickness)
参数 说明
image 目标图像。
center 圆心坐标 (x, y)。
radius 圆的半径。
color 线条颜色,格式为 (B, G, R)。
thickness 正值 - 圆的边框粗细,负值 - 填充整个圆。
import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8) 
# 使用NumPy创建一个400x400像素的数组,表示一个空白图像。
# (400, 400) 是图像的高度和宽度。
# 3 表示图像有3个颜色通道(蓝色、绿色、红色,即BGR格式)。
# dtype=np.uint8 指定数组中每个元素的类型是8位无符号整数,这意味着每个颜色通道的像素值范围是0到255。
# 初始值为0,所以图像是黑色的。

# 绘制一个蓝色圆
cv2.circle(image, (200, 200), 50, (255, 0, 0), thickness=-1)
# 在图像上绘制一个圆。
# image: 要在其上绘制圆的图像。
# (200, 200): 圆心的坐标,X轴200,Y轴200。
# 50: 圆的半径,像素单位。
# (255, 0, 0): 圆的颜色,BGR格式。这里是蓝色(蓝色通道255,绿色和红色通道0)。
# thickness=-1: 圆的填充方式。-1表示填充整个圆,如果指定一个正整数,则表示圆的边框宽度。

cv2.imshow("Circle", image) # 显示图像,窗口标题为"Circle"
cv2.waitKey(0) # 等待用户按下任意按键。0表示无限等待。
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口。

四、绘制多边形

cv2.polylines(image, pts, isClosed, color, thickness)
参数 说明
image 目标图像。
pts 多边形的顶点集合,格式为 np.array([[x1, y1], [x2, y2], ...],dtype=np.int(32)。
isClosed 布尔值,是否闭合多边形。
color 线条颜色,格式为 (B, G, R)。
thickness 边框的粗细。
import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 使用NumPy创建一个400x400像素的数组,表示一个空白图像。
# (400, 400) 是图像的高度和宽度。
# 3 表示图像有3个颜色通道(蓝色、绿色、红色,即BGR格式)。
# dtype=np.uint8 指定数组中每个元素的类型是8位无符号整数,这意味着每个颜色通道的像素值范围是0到255。
# 初始值为0,所以图像是黑色的。

# 定义多边形顶点
points = np.array([[150, 150], [250, 150], [300, 250], [200, 300]], dtype=np.int32)
# 定义多边形的各个顶点坐标。
# np.array() 创建一个NumPy数组。
# 每个子列表 [x, y] 代表一个顶点的(x, y)坐标。
# dtype=np.int32 指定顶点坐标的数据类型为32位整数。

# 绘制多边形
cv2.polylines(image, [points], isClosed=True, color=(255, 255, 0), thickness=2)
# 在图像上绘制多边形。
# image: 要在其上绘制多边形的图像。
# [points]: 顶点的数组列表。即使只有一个多边形,也需要将其放在一个列表中。
# isClosed=True: 表示多边形是闭合的,即最后一个顶点会与第一个顶点连接。如果为False,则只绘制开放的折线。
# color=(255, 255, 0): 多边形的颜色,BGR格式。这里是青色(蓝色和绿色通道255,红色通道0)。
# thickness=2: 多边形边框的线宽,像素单位。

cv2.imshow("Polygon", image) # 显示图像,窗口标题为"Polygon"
cv2.waitKey(0) # 等待用户按下任意按键。0表示无限等待。
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口。


网站公告

今日签到

点亮在社区的每一天
去签到