OpenCV 是一个强大的图像处理库,可以轻松实现图形绘制功能。本文将通过代码示例,介绍如何使用 OpenCV 在图像上绘制常见的图形,包括直线、矩形、圆形、椭圆、多边形以及绘制字体。
1. 画线
API: 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
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 绘制一条白色的直线
cv2.line(image, (50, 50), (350, 350), (255, 255, 255), thickness=2)
# 显示结果
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
2. 画矩形
API: cv2.rectangle(image, pt1, pt2, color, thickness)
参数说明:
- pt1:矩形左上角坐标 (x, y)。
- pt2:矩形右下角坐标 (x, y)。
- thickness:正值表示矩形边框的粗细,负值表示填充整个矩形。
代码示例:
import cv2
import numpy as np
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 绘制一个绿色矩形
cv2.rectangle(image, (100, 100), (300, 200), (0, 255, 0), thickness=3)
cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
3. 画圆
API: cv2.circle(image, center, radius, color, thickness)
参数说明:
- center:圆心坐标 (x, y)。
- radius:圆的半径。
- thickness: 正值 - 圆的边框粗细,负值 - 填充整个圆。
代码示例:
import cv2
import numpy as np
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 绘制一个蓝色圆
cv2.circle(image, (200, 200), 50, (255, 0, 0), thickness=-1)
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
4. 画椭圆
API: cv2.ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness)
参数说明:
- center:椭圆中心点 (x, y)。
- axes:椭圆的长轴和短轴长度 (major_axis, minor_axis)。
- angle:椭圆的旋转角度(以度为单位)。
- startAngle 和 endAngle:椭圆弧的起始和终止角度。
- thickness:正值 - 椭圆边框粗细,负值 - 填充整个椭圆。
代码示例:
import cv2
import numpy as np
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 绘制一个红色椭圆
cv2.ellipse(image, (200, 200), (100, 50), 45, 0, 360, (0, 0, 255), thickness=2)
cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行效果:
5. 画多边形
API: cv2.polylines(image, pts, isClosed, color, thickness)
参数说明:
- pts:多边形的顶点集合,格式为 np.array([[x1, y1], [x2, y2], ...], dtype=np.int32)。
- isClosed:布尔值,是否闭合多边形。
- color:多边形边框的颜色。
- thickness:边框的粗细。
代码示例:
import cv2
import numpy as np
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 定义多边形顶点
points = np.array([[150, 150], [250, 150], [300, 250], [200, 300]], dtype=np.int32)
# 绘制多边形
cv2.polylines(image, [points], isClosed=True, color=(255, 255, 0), thickness=2)
cv2.imshow("Polygon", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
6. 绘制字体
API: cv2.putText(image, text, org, fontFace, fontScale, color, thickness, lineType)
参数说明:
- text:要绘制的字符串。
- org:文本的左下角坐标 (x, y)。
- fontFace:字体类型,常用值包括:
- cv2.FONT_HERSHEY_SIMPLEX:普通字体。
- cv2.FONT_HERSHEY_COMPLEX:复杂字体。
- fontScale:字体的缩放比例。
- thickness:字体的粗细。
- lineType:线条类型(如 cv2.LINE_AA 表示抗锯齿线条)。
代码示例:
import cv2
import numpy as np
# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 绘制文本
cv2.putText(image, "OpenCV Hello World", (50, 350), cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1, color=(255, 255, 255), thickness=2, lineType=cv2.LINE_AA)
cv2.imshow("Text", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
标签:image,cv2,thickness,OpenCV,400,np,import,图形,绘制 From: https://blog.csdn.net/u011186532/article/details/145133180