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

OpenCV2D 特征框架 (24)处理矩形框集合函数groupRectangles()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

分组对象候选矩形框。
cv::groupRectangles 是 OpenCV 中用于处理矩形框集合的一个函数。它通常被用在对象检测中,以减少冗余的检测结果。例如,在人脸检测或多尺度滑动窗口的目标检测后,可能会产生许多重叠的矩形框。为了简化这些结果,我们可以使用 groupRectangles 函数来合并那些相似或重叠的矩形框。

函数原型

void cv::groupRectangles	
(
	std::vector< Rect > & 	rectList,
	int 	groupThreshold,
	double 	eps = 0.2 
)	

参数

  • 参数rectList 输入/输出矩形框向量。输出向量包含保留和分组后的矩形框。(Python列表不会就地修改。)
  • 参数groupThreshold 矩形框最小可能数量减一。该阈值用于一个矩形框组中以保留它。
  • 参数eps 合并矩形框为一组的边之间的相对差异。

该函数是通用函数partition的一个封装。它使用矩形等价标准对所有输入矩形进行聚类,这种标准将大小和位置相似的矩形组合在一起。相似性由eps定义。当eps=0时,完全不进行聚类。如果eps→+inf,则所有矩形框都被放入一个集群中。然后,包含小于或等于groupThreshold个矩形的小集群会被拒绝。在其他每个集群中,计算平均矩形框并将其放入输出矩形框列表中。

代码示例

#include <opencv2/opencv.hpp>
#include <vector>

int main()
{
    // 创建一些示例矩形框
    std::vector< cv::Rect > rectList = { cv::Rect( 10, 10, 20, 20 ), cv::Rect( 12, 12, 20, 20 ), cv::Rect( 50, 50, 40, 40 ), cv::Rect( 98, 98, 60, 60 ) };

    // 定义组合阈值和相似度阈值
    int groupThreshold = 1;
    double eps         = 0.2;

    // 调用groupRectangles函数合并相似矩形
    cv::groupRectangles( rectList, groupThreshold, eps );

    // 输出合并后的矩形
    for ( const auto& rect : rectList )
    {
        std::cout << "Merged Rectangle: " << rect << std::endl;
    }

    return 0;
}

运行结果

Merged Rectangle: [20 x 20 from (11, 11)]

http://www.kler.cn/a/543562.html

相关文章:

  • xtquant库在量化交易中的安装与实战应用
  • 【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试
  • 【知识科普】CPU,GPN,NPU知识普及
  • Pytest自动化测试框架总结
  • 2. UVM的基本概念和架构
  • A*寻路详解
  • 免费体验,一键部署!Alaya NeW应用市场正式上线DeepSeek系列模型
  • Linux零基础快速入门(非常详细),全覆盖Linux的基础知识,看完这一篇就够了。
  • 基于CanMV IDE 开发软件对K210图像识别模块的开发
  • 基于单片机的仓库安防系统(论文+源码)
  • (篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试
  • 机器学习 - 机器学习模型的评价指标
  • HackerRank C++面试,中等难度题目 - Attribute Parser
  • 【C++高并发服务器WebServer】-18:事件处理模式与线程池
  • 基于Java的分布式系统架构设计与实现
  • Kafka的ISR是什么,HW是什么,怎么保证可靠性,Kafka怎么实现顺序消息?为什么Kafka的broker上的topic越多,效率越慢?
  • 嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小
  • 基于SpringBoot+Vue的扶贫助农管理系统
  • ubuntu下ollama/vllm两种方式在本地部署Deepseek-R1
  • 用语言模型探索语音风格空间:无需情感标签的情 感TTS
  • 常用HAL库
  • 【05】RUST常用的集合函数宏类型
  • 通过openresty和lua实现随机壁纸
  • 人工智能代理(AI Agent)的演进与未来:技术突破、应用场景与挑战
  • HbuilderX中如何配置npm和node路径
  • 大数据Orc文件生成与读取