美文网首页计算机视觉
由多模板匹配引发的思考

由多模板匹配引发的思考

作者: 林夕一场 | 来源:发表于2018-10-06 15:23 被阅读0次

    1.(h,w)与(x,y)

    由于图像在计算机中以矩阵形式存储,而矩阵的索引为(rows,cols),但图像的屏幕坐标系为(x,y)与(h,w)刚好相反,因此一些api的参数和数学原理存在一定的差异性,一不小心就掉坑……

    几个参数让人头大的api:

    1.img.shape[:2]返回的属性依次为像素矩阵大小,也就是最大的行数(h)和最大的列数(w),一般如下赋值避免混淆h,w = src.shape[:2],属于(h,w)型参数。

    2.图像插值numpy.resize(),非常坑爹,第二个参数顺序为(w,h),也就是新图像大小为x轴有w个元素,y轴有h个元素,为了符合视觉和习惯认识,对原图进行大小变化应该反转参数顺序,总之,此api是(x,y)型的参数选择。

    3.numpy.reshape(),参数顺序为新矩阵的行和列,故为(h,w)型参数。

    4.绘图系列函数参数全部是(x,y)型的参数选择。

    cv.line(img,(0,0),(300,500),(0,255,0),4,cv.LINE_8,0)
    
    line.PNG

    2.Python知识

    1.[::-1]
    省略起止位置,步进为-1
    python中步进为正,从左往右取,步进为负,从右往左取
    效果跟reverse()方法类似,实现反转

    2.zip方法

    a = [1,2,3]
    b = [4,5,6]
    c = [4,5,6,7,8]
    zipped = zip(a,b)     # 打包为元组的列表
    [(1, 4), (2, 5), (3, 6)]
    zip(a,c)              # 元素个数与最短的列表一致
    [(1, 4), (2, 5), (3, 6)]
    zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
    [(1, 2, 3), (4, 5, 6)]
    

    zip()函数的定义:
    从参数中的多个迭代器取元素组合成一个新的迭代器;
    返回:
    返回一个zip对象,其内部元素为元组;可以转化为列表或元组;
    传入参数:
    元组、列表、字典等迭代器。

    3.numpy.where(condition):输出True的索引
    输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
    矩阵操作,索引为第几行第几列,故为(h,w)型,在多模板匹配时要进行反转。

    3.最终多模板匹配效果

    多模板匹配.PNG

    用黄色矩形选出原图中匹配的模板

    相关文章

      网友评论

        本文标题:由多模板匹配引发的思考

        本文链接:https://www.haomeiwen.com/subject/otchaftx.html