zoukankan      html  css  js  c++  java
  • 模板匹配

    模板匹配:在一幅图像中寻找和模板图像最相似的区域。
    原理:遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了目标。
    OpenCV提供了6种模板匹配算法:
    1、平方差匹配法CV_TM_SQDIF,最好的匹配值为0;匹配越差,匹配值越大。
    2、归一化平方差匹配法CV_TM_SQDIFF_NORMED
    3、相关匹配法CV_TM_CCOR,数值越大表明匹配程度越好。4、归一化相关匹配法CV_TM_CCORR_NORMED
    5、相关系数匹配法CV_TM_CCOEFF,1表示完美的匹配;-1表示最差的匹配。
    6、归一化相关系数匹配法 CV_TM_CCOEFF_NORMED

    函数通过在输入图像image中滑动(从左到右,从上到下),寻找各个位置的区块(搜索窗口)与模板图像templ的相似度,并将结果保存在结果图像result中。该图像中的每一个点的亮度表示该处的输入图像与模板图像的匹配程度,然后可以通过某方法(一般使用函数cvMinMaxLoc)定位result中的最大值或者最小值得到最佳匹配点,最后根据匹配点和模板图像的矩形框标出匹配区域。

    图像示例:

    模板匹配:

     1 // 一幅图像的模板匹配,找到在原图中的大致位置
     2 void Match_Template(IplImage *src, IplImage *templat, IplImage *show)
     3 {
     4     IplImage *result;
     5     int srcW, templatW, srcH, templatH, resultW, resultH;
     6     if(!src || !templat) {
     7         printf("打开图片失败");
     8         return;
     9     }
    10     srcW = src->width;
    11     srcH = src->height;
    12     templatW = templat->width;
    13     templatH = templat->height;
    14 
    15     if(srcW < templatW || srcH < templatH) {
    16         printf("模板不能比原图小");
    17         return;
    18     }
    19     //计算结果矩阵的大小
    20     resultW = srcW - templatW + 1;
    21     resultH = srcH - templatH + 1;
    22     //创建存放结果的空间
    23     result = cvCreateImage(cvSize(resultW,resultH),32,1);
    24     double minVal,maxVal;
    25     CvPoint minLoc,maxLoc;
    26     //调用模板匹配函数--平方差匹配
    27     cvMatchTemplate(src,templat,result,CV_TM_SQDIFF);
    28     //查找最相似的值及其所在坐标
    29     cvMinMaxLoc(result,&minVal,&maxVal,&minLoc,&maxLoc,NULL);
    30     printf("minVal = %f   maxVal = %f
     ",minVal,maxVal);
    31     //绘制结果 
    32     cvRectangle(show,minLoc,cvPoint(minLoc.x+templat->width,minLoc.y+templat->height),CV_RGB(255,255,255),5);
    33         
    34     //显示结果
    35     cvNamedWindow("show");
    36     cvNamedWindow("tem");
    37     cvShowImage("show",show);
    38     cvShowImage("tem" , templat);
    39     cvWaitKey(0);
    40 }

    2021-06-04

  • 相关阅读:
    idea 工具 听课笔记 首页
    桌面粉笔功能.有window ink功能区开启的快捷键
    原创: idea 的maven 方式配置 开发javaWeb(idea+tomcat +maven
    Post方式 前后端分离开发postman工具首次使用心得及注意事项
    c:forEach用法
    数据结构——并查集
    PTA高精度除法
    区块链(了解)
    数据结构-堆排
    数据结构-造树计划-最小生成树
  • 原文地址:https://www.cnblogs.com/2015-16/p/14851168.html
Copyright © 2011-2022 走看看