25 OpenCV直方图反向投影calcBackProject

本文详细介绍了OpenCV中的反向投影原理,通过HSV色彩空间的HS直方图模型来搜索目标对象。讲解了calcBackProject函数的使用,包括参数设置和实现步骤,以及如何从RGB图像转换到HSV空间并计算直方图,最后利用直方图模型生成反向投影图像。
摘要由CSDN通过智能技术生成

一、反向投影

  • 反向投影是反映直方图模型在目标图像中的分布情况,简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型
    • 建立直方图模型
    • 计算待测图像直方图并映射到模型中
    • 从模型反向计算生成图像
      在这里插入图片描述

二、calcBackProject

void cv::calcBackProject    (   const Mat *     images,
        int     nimages,
        const int *     channels,
        InputArray      hist,
        OutputArray     backProject,
        const float **      ranges,
        double      scale = 1,
        bool    uniform = true 
    )
  • const Mat* images:输入图像,图像深度必须位CV_8U,CV_16U或CV_32F中的一种,尺寸相同,每一幅图像都可以有任意的通道数
  • int nimages:输入图像的数量const int* channels:用于计算反向投影的通道列表,通道数必须与直方图维度相匹配,第一个数组的通道是从0到image[0].channels()-1,第二个数组通道从图像image[0].channels()到image[0].channels()+image[1].channels()-1计数
  • InputArray hist:输入的直方图,直方图的bin可以是密集(dense)或稀疏(sparse)
  • OutputArray backProject:目标反向投影输出图像,是一个单通道图像,与原图像有相同的尺寸和深度
  • const float ranges**:直方图中每个维度bin的取值范围
  • double scale=1:可选输出反向投影的比例因子
  • bool uniform=true:直方图是否均匀分布(uniform)的标识符,有默认值true

三、实现步骤

  • 加载图片imread
  • 将图像从RGB色彩空间转换到HSV色彩空间cvtColor
  • 计算直方图和归一化calcHist与normalize
  • 计算反向投影图像 - calcBackProject
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;

// 申明图像矩阵,初始化bin数目:
Mat src, hsv, hue;
int bins = 25;

void Hist_and_Backproj
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值