OpenCV---直方图反向投影
一:直方图反向投影的方法
二:二维直方图的表示
(一)直接显示
def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hist = cv.calcHist([image],[0,1],None,[289,286],[0,289,0,286]) cv.imshow("hist2D",hist)
(二)使用matplotlib
def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hist = cv.calcHist([image],[0,1],None,[289,286],[0,289,0,286]) plt.imshow(hist,interpolation="nearest") plt.title("2D Histogram") plt.show()
三:直方图反向映射
calcHist方法参数可见:OpenCV---图像直方图
def back_projection_demo(): sample = cv.imread("./s2.png") target = cv.imread("./b.png") roi_hsv = cv.cvtColor(sample,cv.COLOR_BGR2HSV) tar_hsv = cv.cvtColor(target,cv.COLOR_BGR2HSV) cv.imshow("sample",sample) cv.imshow("target",target) roihist = cv.calcHist([roi_hsv], [0, 1], None, [324, 356], [0, 324, 0, 356]) #加红部分越小,匹配越放松,匹配越全面,若是bsize值越大,则要求得越精细,越不易匹配,所以导致匹配出来的比较小 cv.normalize(roihist,roihist,0,255,cv.NORM_MINMAX) #规划到0-255之间 dst = cv.calcBackProject([tar_hsv],[0,1],roihist,[0,324,0,356],1) #直方图反向投影 cv.imshow("back_projection_demo",dst)
roihist = cv.calcHist([roi_hsv], [0, 1], None, [32, 46], [0, 324, 0, 356]) #这是两个通道,bsize变少了,但是他的匹配更加广了(对于匹配的局限放宽了)
opencv 2 归一化函数normalize详解
1. 归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。 归一化函数cv2.normalize原型:normalize(src, dst[, alpha[, beta[, norm_type[, dtype[, mask]]]]]) -> dst src参数表示输入数组。 dst参数表示输出与src相同大小的数组,支持原地运算。 alpha参数表示range normalization模式的最小值。 beta参数表示range normalization模式的最大值,不用于norm normalization(范数归一化)模式。 norm_type参数表示归一化的类型。 norm_type参数可以有以下的取值: NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。 NORM_INF:归一化数组的C-范数(绝对值的最大值)。 NORM_L1 :归一化数组的L1-范数(绝对值的和)。 NORM_L2 :归一化数组的(欧几里德)L2-范数。
2.反向投影用于在输入图像(通常较大)中查找特定图像(通常较小或者仅1个像素,以下将其称为模板图像)最匹配的点或者区域,也就是定位模板图像出现在输入图像的位置。 函数cv2.calcBackProject用来计算直方图反向投影。 函数原型:calcBackProject(images, channels, hist, ranges, scale[, dst]) -> dst images参数表示输入图像(是HSV图像)。传入时应该用中括号[ ]括起来。 channels参数表示用于计算反向投影的通道列表,通道数必须与直方图维度相匹配。 hist参数表示输入的模板图像直方图。 ranges参数表示直方图中每个维度bin的取值范围 (即每个维度有多少个bin)。 scale参数表示可选输出反向投影的比例因子,一般取1。
作者:山上有风景
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?