• 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。
  • 相关阅读:
    页面进度条插件pace.js
    cropper.js头像剪裁
    数组每一项与之前项累加
    css实现波浪纹,水波纹动画
    在echart的map上把symbol替换成gif通过convertToPixel坐标转换成px定位到页面,没有做echart的缩放情况下
    vue折叠面板的收缩动画效果,实现点击按钮展开和收起,并有个高度过渡的动画效果
    vue项目中应用自定义的字体
    vue中监听滚动条事件,通过事件控制其他div滚动,固定表头和列
    好久没写博客了
    在nuxt中使用富文本编辑器quill
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9271327.html
Copyright © 2020-2023  润新知