OpenCV基础:绘制基本图形
创作时间:
作者:
@小白创作中心
OpenCV基础:绘制基本图形
引用
CSDN
1.
https://blog.csdn.net/u011186532/article/details/145133180
OpenCV是一个功能强大的开源计算机视觉库,广泛应用于图像处理和计算机视觉任务。掌握OpenCV的基本图形绘制功能是学习图像处理的重要一步。本文将通过详细的代码示例,介绍如何使用OpenCV在图像上绘制直线、矩形、圆形、椭圆、多边形以及文字。
1. 画线
使用cv2.line
函数可以在图像上绘制直线。
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. 画矩形
使用cv2.rectangle
函数可以在图像上绘制矩形。
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. 画圆
使用cv2.circle
函数可以在图像上绘制圆形。
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. 画椭圆
使用cv2.ellipse
函数可以在图像上绘制椭圆。
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. 画多边形
使用cv2.polylines
函数可以在图像上绘制多边形。
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. 绘制字体
使用cv2.putText
函数可以在图像上绘制文本。
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()
运行结果:
热门推荐
电脑内存条选购有哪些技巧?
项目经理不懂专业怎么办
面试官最不希望听到的离职原因有哪些?
思维导图精解《尼尔斯骑鹅旅行记》:一部跨越世纪的文学经典
双鱼座恋爱脑案例分析:爱情至上的星座如何平衡情感与现实
有齿痕舌的人都是脾虚吗?怎么快些消除齿痕舌
五例口味冷菜,制作过程详解
变速驱动器和脉冲接地故障定位
孩子起名:单字名的简单起名技巧介绍
冰雪路面行车全攻略:打滑应对与安全驾驶指南
如何优化作文结构?实例详解开头到结尾全流程技巧
社区微工厂、技能培训……多举措拓宽大龄就业群体发展空间实现增收
战争中军队是如何做到,让士兵绝对服从命令的?只靠命令能实现吗
长寿真功:十二式长寿功法详解
这是一篇写给普通人看的手电选购攻略!
高中三角函数知识点归纳总结 必备公式大全
列净类降糖药物,哪些人适合用,哪些人不适合用?
“春吃甘,肝平安”!中老年人必吃的三种甘味食物,健脾润肺养肝,一身轻松
大学C语言专业前景如何
【内存超频高手】:突破JEDEC限制的DDR4超频绝技
学校绩效考核细则包括哪些内容?
哪些因素影响教师绩效考核周期的选择?
西安无人机产业,有点超出想象……
无人机规划类的项目怎么做
不同带宽对香港服务器有哪些影响
我国主要子弹分类及适用枪械
冰美人重瓣百合种植条件
重瓣百合的养殖方法和注意事项
养老护理员技能培训内容有哪些 需要学多久
神奇的莫比乌斯带