【OpenCV学习笔记】【算法学习】一(模板匹配)

2023-11-06

  1. #include <stdio.h>   
  2. #include "cv.h"   
  3. #include "highgui.h"   
  4.    
  5. int main( int argc, char** argv )   
  6. {   
  7.     IplImage    *img;   
  8.     IplImage    *tpl;   
  9.     IplImage    *res;   
  10.     CvPoint        minloc, maxloc;   
  11.     double        minval, maxval;   
  12.     int            img_width, img_height;   
  13.     int            tpl_width, tpl_height;   
  14.     int            res_width, res_height;   
  15.    
  16.     /* check for arguments */   
  17.     if( argc < 3 ) {   
  18.         fprintf( stderr, "Usage: template_match <reference> <template>/n" );   
  19.         return 1;   
  20.     }   
  21.    
  22.     /* load reference image */   
  23.     img = cvLoadImage( argv[1], CV_LOAD_IMAGE_COLOR );   
  24.    
  25.     /* always check */   
  26.     if( img == 0 ) {   
  27.         fprintf( stderr, "Cannot load file %s!/n", argv[1] );   
  28.         return 1;    
  29.     }   
  30.    
  31.     /* load template image */   
  32.     tpl = cvLoadImage( argv[2], CV_LOAD_IMAGE_COLOR );   
  33.    
  34.     /* always check */   
  35.     if( tpl == 0 ) {   
  36.         fprintf( stderr, "Cannot load file %s!/n", argv[2] );   
  37.         return 1;   
  38.     }   
  39.    
  40.     /* get image's properties */   
  41.     img_width  = img->width;   
  42.     img_height = img->height;   
  43.     tpl_width  = tpl->width;   
  44.     tpl_height = tpl->height;   
  45.     res_width  = img_width - tpl_width + 1;   
  46.     res_height = img_height - tpl_height + 1;   
  47.    
  48.     /* create new image for template matching computation */   
  49.     res = cvCreateImage( cvSize( res_width, res_height ), IPL_DEPTH_32F, 1 );   
  50.    
  51.     /* choose template matching method to be used */   
  52.     cvMatchTemplate( img, tpl, res, CV_TM_SQDIFF );    
  53.     cvMinMaxLoc( res, &minval, &maxval, &minloc, &maxloc, 0 );   
  54.    
  55.     /* draw red rectangle */   
  56.     cvRectangle( img,    
  57.                  cvPoint( minloc.x, minloc.y ),    
  58.                  cvPoint( minloc.x + tpl_width, minloc.y + tpl_height ),   
  59.                  cvScalar( 0, 0, 255, 0 ), 1, 0, 0 );       
  60.    
  61.     /* display images */   
  62.     cvNamedWindow( "reference", CV_WINDOW_AUTOSIZE );   
  63.     cvNamedWindow( "template", CV_WINDOW_AUTOSIZE );   
  64.     cvShowImage( "reference", img );   
  65.     cvShowImage( "template", tpl );   
  66.    
  67.     /* wait until user press a key to exit */   
  68.     cvWaitKey( 0 );   
  69.    
  70.     /* free memory */   
  71.     cvDestroyWindow( "reference" );   
  72.     cvDestroyWindow( "template" );   
  73.     cvReleaseImage( &img );   
  74.     cvReleaseImage( &tpl );   
  75.     cvReleaseImage( &res );   
  76.    
  77.     return 0;   
  78. }   

作者:gnuhpc 
出处:http://www.cnblogs.com/gnuhpc/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OpenCV学习笔记】【算法学习】一(模板匹配) 的相关文章

随机推荐

  • cookies,session,token的区别和使用(接口参考)

    cookies session token的区别和使用 接口参考 1 依据和使用 基于cookie 因cookie的验证是有状态的 验证流程 用户输入登陆凭据 服务器验证凭据是否正确 并创建会话 然后把会话数据存储在数据库中 具有会话id的
  • Vue开发技巧总结

    1 路由参数解耦 通常在组件中使用路由参数 大多数人会做以下事情 export default methods getParamsId return this route params id 在组件中使用 route 会导致与其相应路由的高
  • 【管理学】作业与思考题

    绪论 管理学的研究对象是什么 在企业管理研究基础上抽象出的一般管理理论对其他组织的管理是否也具有指导意义 管理学的研究对象是人类的管理实践 从广义上来说 管理实践包括对个体活动的 管理和对群体活动的管理 任何个人即使在从事仅与自己相关的目标
  • [Github] GitKraken 简体中文翻译补丁

    GitKraken 简体中文翻译补丁 项目地址 项目原理 本项目通过将 rogeraabbccdd GitKraken zh tw 翻译包内的繁体中文文件转化为简体中文而成 采用了 Python3 9 作为转换工具并利用 Github Ac
  • 【高性能】Linux挂载GPT硬盘

    Linux挂载GPT硬盘 硬盘分区表存储了硬盘数据块的存储方式 根据分区表 可以将主流硬盘划分为MBR和GPT格式 其中MBR支持2T以下的硬盘 GPT则是新分区表标准 能支持2T以上的硬盘 64位Linux可以兼容MBR和GPT两类硬盘
  • 吉林大学计算机系高级语言程序设计(C语言)期末题目及解答(下)

    内容简介 因为正在准备考研复试 所以计划把吉大期末的C语言题目重新刷一遍 上机 做为笔记放在这里 有需要的朋友请自提 注 持续更新 因为文章过大所以分为了上下两篇 上篇也在我的博客列表里 本文所有代码均已测试通过 未通过的会在前面标注 未通
  • java 返回文件的二进制字符串给前端

    RequestMapping value fileToStream method RequestMethod GET ApiOperation 将文件转成流传给前端 public WebResponse fileToStream HttpS
  • java jar后台启动的三种方式

    java jar启动 linux中启动 java jar 后台运行程序 直接用java jar xxx jar 当退出或关闭shell时 程序就会停止掉 以下方法可让jar运行后一直在后台运行 java jar xxx jar 说明 在末尾
  • tensorflow基础操作

    目录 数据类型 数据载体 如何创建一个tensor 创建随机数 tensor的性质 检查维度 检查tensorflow是用cpu还是gpu 将tensor格式转换成numpy格式 检查tensor的数据类型 转换tensor 将格式转换成t
  • 性能测试调研:测试的目的是什么?

    昨天讲了 性能测试 你知道什么是99线吗 今天看看第二篇性能测试调研都有哪些内容 1 测试目的 2 系统架构及业务流程 3 测试范围及业务场景 4 性能测试指标 1 测试目的 测试背景 是新系统还是旧系统改造 评估测试重点 新系统预估可能的
  • Spring ApplicationContextAware 获取bean

    Spring 获取 bean spring最重要的功能是作为bean容器 方便的提供bean的初始化和存取服务 我们使用spring 也正是为了避免自己去创建或者管理对象 因此应该尽量从spring容器中去拿bean 而不是自己去new 如
  • OpenGL的Context(Profile)

    OpenGL在渲染的时候需要一个Context 这个Context记录了OpenGL渲染需要的所有信息 可以把它理解成一个大的结构体 它里面记录了当前绘制使用的颜色 是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态
  • 命令行卸载java_卸载java

    有小伙伴经常会遇到Java没有卸载干净的情况 造成重新安装JDK能正常安装 接着安装JRE的时候总是报1603错误 虽然说JRE安装报错了没安装上 但是eclipse IntelliJ IDEA和AndroidStudio都能正常打开和使用
  • 实时音频编解码之二编码学数学知识

    本文谢绝任何形式转载 谢谢 1 3 编码数学算法 1 3 1 定点和浮点 编码的一些参数是经过定标和量化的 然后再将其送入区间编码器进一步压缩数据量 为了降低执行编解码的内存和算力要求 Opus编码器中很多地方使用了Q定标方式将浮点数转化为
  • DTMF通信系统设计—基于MATLAB和STM32

    文章目录 1 摘要 2 设计任务 3 课程设计主要解决的问题 4 设计内容 4 1 整体设计方案 4 2 详细设计内容 5 结果与分析 5 1 基于MATLAB 的DTMF 通信系统 5 2 双机通信模拟 5 2 基于单片机的DTMF 通信
  • C语言堆排序

    堆排序 Heapsort 是一种在时间复杂度上达到了最优的基于比较的排序算法 堆排序算法是指利用堆这种数据结构所设计的一种排序算法 堆积是一个近似完全二叉树的结构 并同时满足堆积的性质 即子节点的键值或索引总是小于 或者大于 它的父节点 堆
  • 为什么想来我们公司工作?- 面试常见问题解析

    在面试的过程中 你的面试官可能会问你这样一个问题 你为什么想在我们公司工作 这是面试最常见的问题之一 这个问题看似简单 但回答时一定要提前有所准备 一般来说 面试官在面试时提问这个问题是希望通过应聘者的回答来衡量应聘者对他们公司的感兴趣程度
  • 综述:运动目标跟踪算法

    运动目标跟踪算法总结 1 传统的目标跟踪算法 运动目标跟踪 首先对目标进行有效地表达 然后在接下来的视频序列的每一帧中找到相似度与目 标最大的区域 从而确定目标在当前帧中的位置 早期的生成式方法主要有两种思路 1 依赖于目标外观模型 通过对
  • 华为2018校园招聘(提前批) 笔试 输出ascii最小的最长连续字符串

    题目 给定一串字符 里面有些字符有连续出现的特点 请寻找这些连续字符串中最长的串 如果最长的串有多个 请输出ascii最小的个 思路 利用start和end来记录当前连续出现的子字符串的起始位置 如果当前字符串长度 gt 历史最大长度或者两
  • 【OpenCV学习笔记】【算法学习】一(模板匹配)

    include