【OpenCv】(python)直方图反向投影

opencv--python(四)haar,直方图+反向投影,meanshift和Camshift追踪算法 haar人脸检测器 OpenCV 已经包含了很多已经训练好的分类器,其中包括:面部,眼睛,微笑等。我们只需加载需要的 XML 分类器。然后以灰度格式加载输入图像或者是视频。如果检测到面部,它会返回面部所在的矩形区域 Rect(x,y,w,h) import numpy as np import cv2 #加载需要的xml分类器 face_cascade = cv2.CascadeClassi... 阅读详情

直方图反向投影:

反向投影可以用来做图像分割,寻找感兴趣区间。它会输出与输入图像大小相同的图像,每一个像素值代表了输入图像上对应点属于目标对象的概率,简言之,输出图像中像素值越高的点越可能代表想要查找的目标。直方图投影经常与camshift(追踪算法)一起使用。

算法实现的方法:首先要为包含我们感兴趣区域的图像建立直方图(紫色衣服)。被查找的对象最好是占据整个图像上。最好使用颜色直方图,物体的颜色信息比灰度图像更容易被分割和识别。再将颜色直方图投影到输入图像查找目标,也就是找到输入图像中每一个像素点的像素值在直方图中对应的概率,这样就得到一个概率图像,最后设置适当的阈值对概率图像进行二值化。

反向投影图计算方法:

我们把感兴趣区域的图像称为小图,目标图像称为大图。

从左上角开始,截取和小图一样大小的图像,作为临时图–》计算临时图的直方图,与小图的直方图比较–》得出一个对比值–》将这个对比值填在当前左上角的像素点上。

注意:1、是直方图和直方图的比较,不是像素点和直方图的比较。

      2、对比值不一定越大越相似,对比值的意义根据直方图比较算法的不同而不同

      3、每个像素点上的对比值    ,代表了大图中这个位置的点,属于小图的概率

代码实现:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

#直方图反向投影
def back_projection_demo():
    sample = cv.imread("D:/javaopencv/sample.png")
    target = cv.imread("D:/javaopencv/target.png")
    roi_hsv = cv.cvtColor(sample, cv.COLOR_BGR2HSV)#转到hsv色彩空间
    target_hsv = cv.cvtColor(target, cv.COLOR_BGR2HSV)

    # show images
    cv.imshow("sample", sample)
    cv.imshow("target", target)
    # 用calcHist来找直方图(也可以用np.histogram2d) ,[0, 1], 计算两个通道,[32, 32]:bins,可以通过调整它改变结果
    roiHist = cv.calcHist([roi_hsv], [0, 1], None, [32, 32], [0, 180, 0, 256])#[0, 180, 0, 256]:h s的取值范围
    # 归一化之后的直方图便于显示,归一化之后就成了 0 到 255 之间的数了。
    cv.normalize(roiHist, roiHist, 0, 255, cv.NORM_MINMAX)
    dst = cv.calcBackProject([target_hsv], [0, 1], roiHist, [0, 180, 0, 256], 1)
    cv.imshow("backProjectionDemo", dst)

#2d直方图
def hist2d_demo(image):
    hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    hist = cv.calcHist([image], [0, 1], None, [32, 32], [0, 180, 0, 256])
    #cv.imshow("hist2d", hist)
    plt.imshow(hist, interpolation='nearest')
    plt.title("2D Histogram")
    plt.show()


print("--------- Hello Python ---------")
src = cv.imread("D:/vcprojects/images/demo.png")
#hist2d_demo(src)
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
hist2d_demo(src)
cv.waitKey(0)

cv.destroyAllWindows()

结果输出:

在这里插入图片描述

opencv中直方图的反向投影详解 本程序详细解释了直方图反响投影后的图片和以前图片的对比 比给出直方图和图像对比 立即下载

相关推荐

python OpenCV学习笔记直方图反向投影的实现

主要介绍了python OpenCV学习笔记直方图反向投影的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

OpenCV-Python(22):直方图反向投影

直方图反向投影是一种基于图像颜色分布的图像处理技术,它通过计算图像中不同区域的颜色直方图,并将其与目标区域的直方图进行比较,从而实现目标的识别和分割。本文将介绍直方图反向投影的原理和应用,并探讨其在计算机视觉任务中的重要性。

图灵追幕者博客录 1371

【opencv学习笔记 14 直方图的反向投影】calcBackProject()函数的使用

直方图的反向投影 """ 直方图的反向投影 我的理解就是给一个sample 然后获取它的图像直方图 然后使用这个直方图在target里面寻找相似的特征 """ import cv2 as cv from matplotlib import pyplot as plt def back_projection_demo(): # 读取图片 sample = cv.imread("imgsample.jpg") target = cv.imread("img.jpg") # 转换为HSV格式 roi_hsv = cv.cvtColor(sample, cv.C

【OpenCV】- 直方图反向投影

🤖🤖🤖🤖 欢迎浏览本博客 🤖🤖🤖🤖😆😆😆😆😆😆😆一名刚刚入行OpenCV的小白👻👻👻👻从事方向:计算机视觉🔔🔔我菜就爱学,分享有误,欢迎大佬指出🔔🔔。

qq_44859533的博客 1782

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 376

ENVI与Sarscape协同处理哨兵一号数据的完整流程解析

本文详细解析了利用ENVI与Sarscape软件协同处理哨兵一号(Sentinel-1)SAR数据的完整工作流程。从环境搭建、数据导入与裁剪,到核心的DEM辅助多时相配准、斑点噪声滤波,再到最终的地理编码与辐射定标,提供了标准化的操作指南与实用技巧,帮助用户高效地将原始雷达数据转化为可用于分析的地理编码产品。

weixin_29251131的博客 339

数字图像处理【10】OpenCV-直方图反向投影与模板匹配

直方图的反向投影是利用直方图模型计算给定图像像素点的特征。反向投影在某一位置的值是源图像在对应位置的像素值的累计。反向投影操作可实现检测输入源图像给定图像的最匹配区域,可用于目标检测。

vx number:zzr_admin,拉入技术交流群。 1621

别让IO口保护二极管坑了你!实测讲解单片机电流倒灌的三种典型症状与防护

本文深入解析单片机电流倒灌的三大典型症状与防护方案,重点分析STM32等单片机在ADC采样异常、系统假死和通信速率异常中的表现。通过实测数据和电路设计建议,提供从基础二极管隔离到专业隔离器件的分级防护策略,帮助工程师有效预防和解决电流倒灌问题。

weixin_29280219的博客 348

opencv_python直方图反向投影原理解析

opencv_python直方图反向投影

weixin_66412464的博客 1562

STM32F407+LAN8720网口不通?别慌,手把手教你用CubeMX和HAL库搞定RMII配置与调试

本文详细介绍了STM32F407与LAN8720网口不通的全面排查与解决方法,涵盖硬件检查、CubeMX配置、PHY芯片初始化和LWIP协议栈优化。通过RMII接口配置、时钟树设置和PHY芯片调试,帮助开发者快速定位并解决网络连接问题,提升嵌入式网络开发效率。

weixin_30457551的博客 506

【HCIA学习记录】WLAN配置实验

HCIA-WLAN

寸先生的AI道路 3874

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

计算直方图的反向投影。

jndingxin的专栏 1475

在 SAP BTP 中通过 MTA 自动创建 Service Broker 的原理与实战

本文探讨了如何在SAP BTP的Cloud Foundry环境中通过MTA部署自动创建和注册Service Broker。传统手动注册方式存在依赖管理员、环境一致性差等问题。通过MTA部署可实现自动化Broker注册,利用占位符生成安全凭证,并确保平台端与应用端认证一致。文章详细解析了关键配置参数,包括create-service-broker标志、Broker名称、认证凭据和访问URL的设置方法。这种基础设施即代码(IaC)方式能提升DevOps实践水平,使服务注册成为应用部署流水线的有机组成部分。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 201

opencv python 直方图反向投影_python opencv 直方图反向投影的方法

本文介绍了python opencv 直方图反向投影的方法,分享给大家,具体如下:目标:直方图反向投影原理:反向投影可以用来做图像分割,寻找感兴趣区间。它会输出与输入图像大小相同的图像,每一个像素值代表了输入图像上对应点属于目标对象的概率,简言之,输出图像中像素值越高的点越可能代表想要查找的目标。直方图投影经常与camshift(追踪算法)算法一起使用。算法实现的方法,首先要为包含我们感兴趣区域的...

weixin_34280468的博客 310

最全面的行人重识别数据集汇总

汇总了一些REID的数据集,几乎涵盖了所有的数据集。如果有缺少的欢迎留言补充。我将能下载到的数据集放在了网盘里,链接如下:链接:https://pan.baidu.com/s/1hQ4PKvtAhAvoZiXbcIu93w 提取码:o3iyQMUL iLIDS基于iLIDS MCTS的数据集,是一个在机场繁忙时候通过监控系统中多个摄像头收集到的数据集。几乎每个ID(identity)都有从两个无重叠(区域)的摄像头拍摄的四幅图像。该数据集具有严重遮挡和姿势差异的场景。

m0_47867638的博客 1万+

机器人控制基础:伺服驱动电机 PID 参数自适应控制的实现方法及研究

伺服电机PID参数自适应控制技术研究 摘要:针对伺服驱动电机在动态负载工况下传统PID控制性能下降的问题,本文研究了多种自适应控制方法。通过分析6种主流技术(包括模型参考自适应、模糊逻辑、神经网络等)的原理、实现步骤及适用场景,揭示了负载感知精度、参数调节实时性和系统稳定性三大技术难点,并提出了相应解决方案。以模糊自适应PID为例的实验验证表明,该技术能有效提升伺服系统在变负载条件下的控制性能。研究为工业应用中伺服电机的精确控制提供了重要参考。

start_up_go的博客 828

OpenCV - 直方图反向投影(Python实现)

原理

C橘子 1744

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

opencv python 直方图反向投影_Python OpenCV处理图像之图像直方图和反向投影

本文实例为大家分享了Python OpenCV图像直方图和反向投影的具体代码,供大家参考,具体内容如下当我们想比较两张图片相似度的时候,可以使用这一节提到的技术关于这两种技术的原理可以参考我上面贴的链接,下面是示例的代码:0x01. 绘制直方图import cv2.cv as cvdef drawGraph(ar,im, size): #Draw the histogram on the imag...

weixin_42318225的博客 206

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现

本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下:它用于图像分割或寻找图像中感兴趣的对象。简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每个像素对应于属于我们对象的像素的概率。输出图像将使我们感兴趣的对象比其余部分更白。该怎么做呢?我们创建一个图像的直方图,其中包含我们感兴趣的对象。为了得到更好的结果,对象应该尽可能地填充图像。而颜色直方...

weixin_39899021的博客 199

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

直方图反向投影(OpenCV+Python)

import cv2 as cv def back_projection_demo(): sample = cv.imread(r"C:\pics\samples\data\sample.png") target = cv.imread(r"C:\pics\samples\data\aloeL.jpg") roi_hsv = cv.cvtColor(sample, cv.COLOR_BGR2HSV) target_hsv = cv.cvtColor(target, cv.C

m0_43425029的博客 245

opencv python 直方图反向投影_opencv 直方图反向投影

直方图反向投影式通过给定的直方图信息,在图像找到相应的像素分布区域,opencv提供两种算法,一个是基于像素的,一个是基于块的。使用方法不写了,可以参考一下几个网站:测试例子1:灰度直方图反向投影灰度直方图反向投影IplImage * image= cvLoadImage("22.jpg");IplImage * image2= cvLoadImage("2.jpg");int hist_size...

weixin_30928785的博客 211

Python+OpenCV:直方图反向投影(Histogram Backprojection)

Python+OpenCV:直方图反向投影(Histogram Backprojection) Algorithm in Numpy 1. First we need to calculate the color histogram of both the object we need to find (let it be 'M') and the image where we are going to search (let it be 'I'). import numpy as np impor

《好好先生》专栏 594

opencv python 直方图反向投影_python使用numpy实现直方图反向投影示例

最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现将图中的红色玫瑰分割出来,教程给的代码缺了一句函数,导致实现不出来。自己加上了后(也不知到这样加对不对)代码和效果如下:代码:import cv2import numpy as nproi = cv2.imread('./data/rose_red.jpg')...

weixin_28706423的博客 165
上一篇: [Opencv](python)直方图均衡化与直方图比较
下一篇: 【OpenCV 4】(python 3.7)模板匹配原理及代码实现
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值