OpenCV绘制标签与包围框方法详解
需积分: 5 102 浏览量
更新于2024-08-05
收藏 2KB TXT 举报
"该代码片段是使用OpenCV库在C++中实现的函数,用于在图像上绘制旋转矩形(RotatedRect)的边界框并添加标签。输入参数是一个包含多个旋转矩形的vector,输出是带有标注的图像。代码中通过循环遍历旋转矩形集合,计算每个矩形的边界框位置(Box)和标签位置(Label),并使用随机颜色进行绘制。此外,还定义了文本的缩放系数(reteText)以便调整字体大小,并使用cv::rectangle函数来绘制边界框和标签区域。"
在OpenCV中,`cv::RotatedRect`是一个结构体,用于表示具有任意角度的矩形。它包含三个元素:中心点坐标(x, y)和一个表示矩形尺寸和旋转角度的矩形矩形(width, height, angle)。`boundingRect()`方法用于获取旋转矩形的非旋转包围矩形。
在`DrawBoxLabel`函数中,首先计算每个`RotatedRect`对应的边界框(Box)和标签区域(Label)。边界框的位置和大小直接来源于`boundingRect()`,而标签区域通常放在边界框的左上角,并稍微偏移,以便与边界框保持一定距离。标签的宽度设定为边界框宽度的1/5,高度为边界框高度的1/10。
为了使每个边界框的颜色各异,代码使用了`cv::RNG`类生成随机颜色,并将其赋值给`cv::Scalar`对象(color_Tmp),该对象包含RGB三个分量。`cv::rectangle`函数用于在图像上绘制矩形,第一个参数是目标图像,第二个参数是矩形位置,第三个参数是颜色,第四个参数是线条宽度,第五个参数是线条类型(这里是8连接性)。
`thickness_Boxx`变量定义了边界框线条的宽度,设置为3。在标签区域,使用负值的厚度参数(-1)填充整个矩形区域,而不是只画边框。
`reteText`变量决定了文本的高度。在实际应用中,可能需要根据字体类型和大小调整这个值,以确保文本在图像中的可读性。`F`可能是一个未显示完整的变量名,可能代表字体的大小或类型。
最后,函数内部可能会调用`cv::putText`函数来在标签区域内写入文本,但这部分代码没有提供。`putText`函数需要指定文本内容、位置、字体、字体大小、颜色以及文本的垂直对齐方式。
这段代码是OpenCV中用于标注和可视化检测结果(如物体检测)的典型实现,可以用于各种计算机视觉项目,例如图像分析、目标检测等。
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
2024-11-26 上传
刘玄烨
- 粉丝: 0
- 资源: 3
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录