0前言
在图像处理与计算机视觉中,经常需要在图像上绘制形状、文本等内容来标注数据或制作示例图片。OpenCV 提供了丰富的图形绘制函数,使用简单且功能强大。本文将通过代码示例,详细介绍如何使用 OpenCV 绘制矩形、圆、直线以及添加文本。
1代码解析
本次代码实现了如下几项功能:
- 绘制矩形(填充与不填充)
- 绘制圆(空心与实心)
- 绘制直线
- 添加文本
2绘制矩形
cv.rectangle(image, (0, 0), (50, 50), (0, 0, 255), -1)
cv.rectangle(image, (50, 50), (100, 200), (0, 255, 0), 1)
(0, 0)
和(50, 50)
定义矩形的对角顶点(左上角和右下角)。(0, 0, 255)
表示矩形颜色为红色(BGR 格式)。-1
表示填充矩形,1
表示线条宽度。
3绘制圆形
cv.circle(image, (100, 100), 100, (255, 0, 0), 2, cv.LINE_8, 0)
cv.circle(image, (300, 300), 100, (255, 0, 0), -1, cv.LINE_8, 0)
(100, 100)
是圆心坐标。100
是半径。(255, 0, 0)
表示蓝色。2
为线条宽度,-1
表示填充圆。
4绘制直线
cv.line(image, (100, 100), (200, 200), (0, 0, 255), 2)
- 起点为
(100, 100)
,终点为(200, 200)
。 (0, 0, 255)
表示红色,2
是线条宽度。
5添加文本
cv.putText(image, "Hello OpenCV", (50, 150), cv.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv.LINE_AA)
"Hello OpenCV"
是文本内容。(50, 150)
是文本左下角坐标。cv.FONT_HERSHEY_SIMPLEX
是字体类型。1
是字体缩放因子。(255, 255, 255)
表示白色文本。2
是线条粗细。
完整代码
import cv2 as cv
import numpy as np
def drew_demo():
# 创建一个黑色画布,大小为 512x512,3 通道(RGB)
image = np.zeros((512, 512, 3), np.uint8)
# 绘制红色矩形,并填充整个矩形(宽度设置为 -1 表示填充)
cv.rectangle(image, (0, 0), (50, 50), (0, 0, 255), -1)
# 绘制绿色矩形,不填充(线条宽度设置为 1)
cv.rectangle(image, (50, 50), (100, 200), (0, 255, 0), 1)
# 绘制蓝色空心圆,圆心为 (100, 100),半径为 100,线条宽度为 2
cv.circle(image, (100, 100), 100, (255, 0, 0), 2, cv.LINE_8, 0)
# 绘制蓝色实心圆,圆心为 (300, 300),半径为 100,线条宽度为 -1 表示填充
cv.circle(image, (300, 300), 100, (255, 0, 0), -1, cv.LINE_8, 0)
# 绘制一条红色直线,起点为 (100, 100),终点为 (200, 200),线条宽度为 2
cv.line(image, (100, 100), (200, 200), (0, 0, 255), 2)
# 在图像上添加文本 "Hello OpenCV",字体为 FONT_HERSHEY_SIMPLEX,缩放因子为 1,颜色为白色
cv.putText(image, "Hello OpenCV", (50, 150), cv.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv.LINE_AA)
# 显示绘制后的图像
cv.imshow("Original Image", image)
cv.waitKey(0)
cv.destroyAllWindows()
# 调用函数
drew_demo()
运行结果
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容