当前位置: 首页 > news >正文

使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是 OpenCV 中常见的操作。在本篇文章中,我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形。

绘制线条

在 OpenCV 中,可以使用 cv2.line() 函数来绘制直线。该函数的语法如下:

cv2.line(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:起点坐标(x, y)。
  • end_point:终点坐标(x, y)。
  • color:线条颜色,格式为 (B, G, R)
  • thickness:线条的粗细,默认为 1。
示例代码:绘制一条红色的线
import cv2
import numpy as np# 创建一个黑色的图像
image = np.zeros((500, 500, 3), dtype=np.uint8)# 定义线条的起点和终点
start_point = (50, 50)
end_point = (450, 450)# 定义线条颜色(红色)
color = (0, 0, 255)  # BGR格式# 绘制线条
cv2.line(image, start_point, end_point, color, 5)# 显示图像
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

绘制矩形

OpenCV 提供了 cv2.rectangle() 函数来绘制矩形。该函数的语法如下:

cv2.rectangle(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:矩形左上角的坐标 (x, y)。
  • end_point:矩形右下角的坐标 (x, y)。
  • color:矩形颜色,格式为 (B, G, R)。
  • thickness:矩形边框的粗细。如果填充矩形,则设置为 -1
示例代码:绘制一个绿色的矩形
import cv2
import numpy as np# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)# 定义矩形颜色(绿色)
color = (0, 255, 0)  # BGR格式# 绘制矩形
cv2.rectangle(image, start_point, end_point, color, 5)# 显示图像
cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

填充矩形

如果要绘制一个填充的矩形,只需将 thickness 设置为 -1,OpenCV 会自动将矩形内部填充为指定的颜色。

示例代码:绘制一个填充的蓝色矩形
import cv2
import numpy as np# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)# 定义矩形颜色(蓝色)
color = (255, 0, 0)  # BGR格式# 绘制填充矩形
cv2.rectangle(image, start_point, end_point, color, -1)# 显示图像
cv2.imshow("Filled Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

代码解释

  1. 创建图像:我们使用 numpy.zeros() 创建一个黑色的图像,或者使用 numpy.ones() 创建一个白色的图像。dtype=np.uint8 表示图像数据类型为 8 位无符号整数,这在 OpenCV 中通常用于表示图像像素值(范围 0-255)。
  2. 绘制图形:通过 cv2.line()cv2.rectangle() 函数来绘制线条和矩形。我们定义了起始点和结束点,选择了颜色并指定了线条粗细。
  3. 显示图像cv2.imshow() 函数用于显示图像,cv2.waitKey(0) 等待用户按下任意键后关闭图像窗口,cv2.destroyAllWindows() 关闭所有打开的窗口。

总结

通过 OpenCV 绘制线条和矩形是一个非常简单的操作,可以用来标记图像中的区域、进行图形处理或为图像添加一些基本的标记。无论是使用 cv2.line() 还是 cv2.rectangle(),你都可以轻松自定义图形的颜色、位置和大小,这对于各种图像处理应用非常有用。

http://www.lryc.cn/news/512189.html

相关文章:

  • npm 切换镜像源
  • CSS(四)display和float
  • MMaudio AI:如何通过 AI 实现精准的视频到音频合成
  • SQL进阶技巧:如何分析双重职务问题?
  • OpenCV相机标定与3D重建(37)计算两幅图像之间单应性矩阵(Homography Matrix)的函数findHomography()的使用
  • Nacos配置管理+共享配置、配置热更新
  • asp.net core系统记录当前在线人数
  • 秒杀场景的设计思考
  • 快速掌握Haproxy原理架构
  • 基于Centos7.X系统端口占用处理
  • MySQL的索引失效的原因有那些
  • Java重要面试名词整理(十):Kafka
  • 内置ALC的前置放大器D2538A/D3308
  • 04-微服务02
  • Java中的this关键字详解:深入理解与应用
  • 2、C#基于.net framework的应用开发实战编程 - 设计(二、四) - 编程手把手系列文章...
  • 设置首选网络类型以及调用Android框架层的隐藏API
  • “Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”
  • 神经网络-AlexNet
  • Hutool 发送 HTTP 请求的几种常见写法
  • 【Linux】进度条
  • 【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程
  • 强化学习蘑菇书笔记
  • 《机器学习》——线性回归模型
  • Linux(Centos 7.6)网卡信息没有了问题处理
  • WEB攻防-通用漏洞-文件上传-js验证-MIME验证-user.ini-语言特征
  • mybatis-plus代码生成器
  • 12.24-12.28Mysql锁阅读笔记
  • 支持最新 mysql9的workbench8.0.39 中文汉化教程来了
  • golang连接jenkins构建build