【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库中,直方图的反向投影(Back Projection)是一种强大的图像处理技术,常用于目标检测或图像匹配。直方图反向投影的基本思想是,通过比较目标图像和样本图像的直方图,找出目标图像中与样本图像特征最接近的区域。在本例中,我们主要关注`calcBackProject()`函数的使用。 我们需要理解直方图的计算。直方图是统计图像中像素值分布的一种方法,它将像素值映射到特定的区间(bin),并统计每个区间的像素数量。在OpenCV中,`calcHist()`函数用于计算图像的直方图。例如,代码中的`roiHist = cv.calcHist([roi_hsv], [0, 1], None, [64, 64], [0, 180, 0, 256])`计算了样本图像`roi_hsv`的HSV色彩空间的直方图,其中第一个参数是一个包含图像的列表,第二个参数是用于计算直方图的通道,第三个参数是用于设置掩码(在这里为空),第四个参数是bin的数量,最后一个参数是直方图的边界。 接下来,为了进行反向投影,我们需要对直方图进行归一化处理。`cv.normalize()`函数用于此目的,它调整直方图的值范围,使其适合后续的反向投影。例如,`cv.normalize(roiHist, roiHist, 0, 255, cv.NORM_MINMAX)`将直方图归一化到0到255的范围内。 然后,`calcBackProject()`函数用于计算直方图的反向投影。在代码中,`dst = cv.calcBackProject([target_hsv], [0, 1], roiHist, [0, 180, 0, 256], 1)`执行这个操作。函数的第一个参数是输入图像列表,第二个参数是计算反向投影的通道,第三个参数是样本直方图,第四个参数是直方图的边界,最后一个参数是权重(通常设置为1)。 得到的反向投影图`dst`是一个表示目标图像中每个像素与样本图像匹配程度的图像。高值区域表示与样本图像特征匹配度高,因此这些区域可能是我们要找的目标。 在实际应用中,可以使用直方图的反向投影与阈值相结合,来提取出与样本图像特征最接近的区域。例如,可以设置一个阈值,将反向投影图中超过该阈值的像素标记出来,从而定位到潜在的目标。 `hist2d_demo()`函数展示了如何计算和显示2D直方图,这有助于理解颜色空间的分布情况,但不是直方图反向投影的一部分。 总结来说,直方图的反向投影是通过OpenCV的`calcBackProject()`函数实现的,它是图像分析和目标检测的关键工具,尤其适用于基于特征的图像匹配场景。通过理解和运用这一技术,我们可以更有效地识别和定位图像中的特定对象。





























- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 焊接工程师培训.ppt
- 自动控制原理第4章-根轨迹.ppt
- 第04章-施工总进度-正稿.doc
- 内蒙古锡林浩特某酒店营销策划方案.doc
- 多层教学楼指标10.doc
- 2009年下半年度上海市建设工程价格与指数.doc
- 机动车登记规定.doc
- python 练习题,python 对称迷宫
- python 练习题,python计算器
- python 练习题,python价值之和
- 信号完整性及高速数字设计基础+考试题及解答
- AI生产力工具-免费开源,提高用户生产力,保护隐私和数据安全 包括但不限于…
- stm32选型手册,参考命名规则等信息
- 【医学图像分割】基于Swin-Transformer的细胞核分割模型:MoNuSeg数据集端到端训练与推理系统实现
- (70页PPT)WMS助力企业数字化转型.pptx
- 公益资料(70页PPT)智慧方案智慧医院信息化规划方案.pptx


