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()
运行结果:
热门推荐
电脑休眠与睡眠:深入了解两者之间的微妙差异
2024年各省高考模式和试卷类型浅析,设置太复杂,一般人弄不懂
浙大学者研究发现,经常喝红茶,改善肠道健康,维持肠道稳态
在线式PPb级溶解氧分析仪为各类水体的健康提供精准和高效的解决方案
开曼群岛是哪个国家?全面解析开曼群岛的地理位置和政治制度
美国研发快速入睡法:战士120秒内进入梦乡
怎么快速提升管理能力
读书最好的方法是,理论联系实践,学用结合,边学边用
集成供应链管理中信息共享的壁垒如何突破?
酱油中的水解植物蛋白(HVP)对人体有害吗?
“破防”的美国网约车司机,开始自建接单软件
智能音箱技术解析:从唤醒到执行的AI Pipeline
汽车久放不开,要不要隔几天启动一次?不启动,车早晚坏!这话是真的吗?
用AI做《牧神记》动画,谁给了玄机勇气?
扰动与不确定性估计集大成者 —— 扩张状态观测器网络
桂花一年开几次?种植桂花的四大禁忌及影响开花的因素
AI辅助代码调试与问题排查:解放程序员的效率利器
给猫咪洗耳朵用什么好?如何正确清洁猫咪耳朵?
建筑外墙空鼓红外热成像检测
攀登,歇脚,再出发——记者跟随泰山挑山工送货
腿毛少说明肾不好?别乱猜,腿毛是否旺盛,或与4个因素有关
韩孝周十部必看电影(大满贯影后韩孝周 9部影视作品 )
为什么电动车用户不在乎电耗?
日语中的音读与训读:古汉语发音与日本固有语言的融合
重庆31名援藏专业技术干部奔赴雪域高原
吃饭只看“升糖指数”?你就OUT了,附86种常见食物血糖负荷指数,建议收藏!
如何安抚闹情绪的女朋友
川字纹、眉间纹、悬针纹:面部皱纹的区别与解析
易经中的阴阳平衡:女人的内在力量
局麻手术后多久可以喝水吃东西