Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用

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

算法描述

计算直方图的反向投影。

cv::calcBackProject 函数计算直方图的反向投影。也就是说,类似于 calcHist,在每个位置 (x, y),该函数收集输入图像中选定通道的值,并找到对应的直方图区间。但是,与其递增该区间值,该函数读取区间值,将其乘以 scale,并存储在 backProject(x, y) 中。从统计学的角度来看,该函数计算每个元素值相对于由直方图表示的经验概率分布的概率。例如,你可以如何找到并跟踪场景中的一个亮色物体:

在跟踪之前,让物体占据几乎整个画面,展示给摄像头。计算色调直方图。直方图可能会有强烈的峰值,对应于物体中的主导颜色。
在跟踪时,使用预先计算的直方图计算每个输入视频帧的色调平面的反向投影。对反向投影进行阈值处理以抑制弱颜色。可能还有意义的是抑制颜色饱和度不足、太暗或太亮的像素。
在结果图像中找到连通组件,并选择例如最大的组件。
这是 CamShift 颜色物体跟踪器的大致算法。

参数

  • 参数images 源数组。它们都应该具有相同的深度(CV_8U, CV_16U 或 CV_32F),并且具有相同的尺寸。每一个都可以有任意数量的通道。
  • 参数nimages 源图像的数量。
  • 参数channels用于计算反向投影的通道列表。通道的数量必须与直方图的维度相匹配。第一个数组的通道编号从 0 到 images[0].channels()-1,第二个数组的通道编号从 images[0].channels() 到 images[0].channels() + images[1].channels()-1,以此类推。
  • 参数hist 输入的直方图,它可以是密集的也可以是稀疏的。
  • 参数backProject 目标反向投影数组,它是一个单通道数组,具有与 images[0] 相同的尺寸和深度。
  • 参数ranges 每个维度的直方图区间边界的数组。参见 calcHist。
  • 参数scale 反向投影输出的可选比例因子。
  • 参数uniform 标志位,指示直方图是否是均匀的(参见上述说明)。

代码示例


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

using namespace std;
using namespace cv;

int main()
{
    Mat src, hsvImg, hist;
    vector< Mat > hsv;
    int histSize = 5;

    src = imread( "/media/dingxin/data/study/OpenCV/sources/images/qiu.jpg" );
    imshow( "src", src );

    //转换为 HSV 通道图像
    cvtColor( src, hsvImg, COLOR_BGR2HSV );
    imshow( "hsvImg", hsvImg );

    //通道分离
    split( hsvImg, hsv );
    imshow( "hImg", hsv[ 0 ] );

    int channels[]        = { 0 };
    float hr[]            = { 0, 180 };
    const float* ranges[] = { hr };
    calcHist( &hsv[ 0 ], 1, &channels[ 0 ], Mat(), hist, 1, &histSize, &ranges[ 0 ] );
    normalize( hist, hist, 255, 0, NORM_L1 );
    imshow( "hist", hist );

    //计算反向投影
    Mat backImg;
    calcBackProject( &src, 1, &channels[ 0 ], hist, backImg, &ranges[ 0 ], 1 );
    imshow( "backImg", backImg );

    waitKey( 0 );
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2110768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主流的3D模型格式有什么区别?

主流的3D模型格式在多个方面存在区别&#xff0c;这些区别主要体现在格式的特点、支持的功能、使用场景以及兼容性等方面。51建模网支持持obj、fbx、stl、glb、gltf、dae、3ds模型格式上传展示。以下是对几种主流3D模型格式的区别进行的详细分析&#xff1a; 1. OBJ格式 特点&…

初始JESD204B高速接口协议(JESD204B一)

本文参考 B B B站尤老师 J E S D 204 B JESD204B JESD204B视频&#xff0c;图片来自 J E S D JESD JESD手册或者 A D I / T I ADI/TI ADI/TI官方文档。 1、对比 L V D S LVDS LVDS与 J E S D 204 JESD204 JESD204 J E S D 204 B JESD204B JESD204B是逻辑器件和高速 A D C / D …

【YashanDB知识库】修改字段长度后,jdbc驱动接口报YAS-04007 Message:result set metadata changed异常

问题现象 yashandb修改表的字段长度后&#xff0c;客户的业务接口报YAS-04007异常&#xff0c;截图如下: 问题的风险及影响 客户的业务在访问yashandb时异常出错&#xff0c;影响使用 问题影响的版本 所有的yashandb版本 问题发生原因 使用jdbc接口获取PreparedStatement…

库存盘点频出错?试试这款专业软件的库存分析报表工具

在企业的日常运营中&#xff0c;库存管理的实际操作直接影响到我们的工作效率和企业的整体盈利情况。库存不仅是企业的物资储备&#xff0c;更是我们每天工作中必须处理的关键环节。如果库存管理不到位&#xff0c;可能会导致产品积压、资金占用&#xff0c;甚至影响到销售和客…

数据仓库技术选型方案文档

关联博客&#xff1a; 数据仓库技术选型方案文档 Flink CDC MySQL数据同步到Doris表同步配置生成工具类 新版报表系统&#xff08;明细报表、看板、数据大屏&#xff09;方案&介绍 文章目录 数据仓库技术选型背景现状现状架构目标架构业务反馈&痛点问题&#xff1a;原因…

算法训练营——day4螺旋矩阵

1 螺旋矩阵II-力扣59&#xff08;中等&#xff09; 1.1 题目&#xff1a;螺旋矩阵II 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&…

微深节能 平板小车运动监测与控制系统 格雷母线

微深节能的平板小车运动监测与控制系统中的格雷母线&#xff0c;是一种高精度、非接触式的位移测量系统&#xff0c;它在平板小车的运动监测与控制中发挥着核心作用。 一、系统概述 微深节能的平板小车运动监测与控制系统通过集成格雷母线定位系统&#xff0c;实现了对平板小车…

民营火箭公司「星际荣耀」宣布完成7亿元人民币C轮及C+轮融资

近日&#xff0c;北京星际荣耀空间科技股份有限公司&#xff08;以下简称“星际荣耀”&#xff09;完成 7 亿元人民币 C 轮及 C 轮融资&#xff0c;分别由新鼎资本和四川产业振兴基金投资集团有限公司领投&#xff08;以下简称“四川产业基金”&#xff09;&#xff0c;京铭资本…

项目管理:在职场,一定要谨记这5句话

项目管理中&#xff0c;高效、有序地推进项目是每个项目经理追求的目标。为了达成这一目标&#xff0c;这五句话值得我们深深铭记&#xff1a; 一、明确目标&#xff0c;方向引领行动 明确的目标是成功的第一步&#xff0c;在项目管理中&#xff0c;这句话尤为重要。 一个清…

揭秘中国企业GPU采购背后的技术驱动力:中国移动引领国内算力市场发展

引言 随着人工智能&#xff08;AI&#xff09;和大数据的快速发展&#xff0c;GPU&#xff08;图形处理单元&#xff09;成为了全球高性能计算市场的核心技术之一。在这一背景下&#xff0c;英伟达的显卡以其强大的计算能力在全球市场中备受青睐&#xff0c;尤其是在数据中心和…

python画图|并列直方图绘制

前述学习过程中&#xff0c;已经知晓普通直方图绘制和堆叠直方图绘制&#xff0c;参考链接如下&#xff1a; 西猫雷婶-CSDN博客 有时候&#xff0c;我们还会遇到并列直方图绘制的需求&#xff0c;今天就探索一下。 【1】官网教程 按照惯例&#xff0c;我们先来到官网&#…

vue3有了解过吗?和vue2的区别

vue3介绍 &#x1f355;&#x1f355;&#x1f355;关于vue3的重构背景&#xff0c;作者是这样说的&#xff1a; 「Vue 新版本的理念成型于 2018 年末&#xff0c;当时 Vue 2 的代码库已经有两岁半了。比起通用软件的生命周期来这好像也没那么久&#xff0c;但在这段时期&…

资源第一篇 =》bundle包

简介 bundle包主要用于游戏资源的模块化功能&#xff0c;以便更好的管理游戏资源、优化游戏资源的加载、优化游戏包体的大小&#xff0c;提高游戏体验。我们可以根据实际的场景&#xff0c;把游戏资源进行合理的分包。 bundle类型 cocos包分为内置bundle和自定义bundle。 内…

七、装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;允许在不改变对象自身的情况下&#xff0c;动态地向对象添加新功能。它通过将功能附加到对象的方式来增强其行为&#xff0c;提供了一种灵活的替代方案来使用子类扩展功能。 主要组成部分…

python 检测端口是否开放

python的socket库可以检测端口是否开放。 import socket; sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) result sock.connect_ex((127.0.0.1,80)) if result 0:print "Port is open" else:print "Port is not open" 这里sock.connect_ex()方…

机器人领域顶刊TRO最受欢迎的TOP 50文章盘点

介绍 众所周知&#xff0c;TRO是机器人领域的绝对顶刊&#xff0c;每一篇文章都是质量极高的。最近在看TRO官网的时候&#xff0c;发现官网给出了在TRO发布文章中最收欢迎的TOP 50 paper list。下面来看看都有哪些文章&#xff1f;是不是和您想的一样&#xff1f;下面文章的顺…

Ollama—87.4k star 的开源大模型服务框架!!

这一年来&#xff0c;AI 发展的越来越快&#xff0c;大模型使用的门槛也越来越低&#xff0c;每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型&#xff08;LLM&#xff09;服务工具…

【redis】认识redis和分布式系统

文章目录 认识 redisredis 的主要功能实现数据库实现缓存实现消息中间件 分布式系统单机架构为什么数据多了主机就难以应对 &#xff1f;分布式系统 认识 redis redis 的主要功能 用来在内存中存储数据 定义变量不就是在内存中存储数据吗&#xff1f;为什么还需要 redis 来向…

如何看待AI技术对人们生活的影响?

人工智能&#xff08;AI&#xff09;技术对人们生活的影响是多方面的&#xff0c;既有积极的一面&#xff0c;也存在一些需要关注的问题。以下是对AI技术在生活中影响的综合看法&#xff1a; 积极影响&#xff1a; 提高效率&#xff1a;AI技术在各行各业中的应用大大提高了工作…

14,子查询语句嵌套

1.1 查询研发部门的所有员工信息 #步骤1: 查询研发部门的 did SELECT did FROM t_department WHERE dname 研发部; #步骤2: 嵌套子查询,查询员工信息 SELECT * FROM t_employee WHERE did (SELECT did FROM t_department WHERE dname 研发部); 1.1 查询和白露性别和部门相…