【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学习笔记】【算法学习】一(模板匹配) 的相关文章

  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 针对不同相机(RGB 和红外)的 StereoCalibrate

    我在校准两个摄像头时遇到问题 第一个是 RGB 第二个是红外 它们有不同的分辨率 我调整了大小并裁剪了更大的图像 焦距等等 例子 RGB 1920x1080 Infrared 512x424 如何相互校准它们 我应该在stereoCalib
  • 使用 cvcreateimage 使用 opencv 创建简单的黑色图像

    来自 OpenCV 新手的非常基本的问题 我只想创建一个图像 每个像素设置为0 黑色的 我在 main 函数中使用了以下代码 IplImage imgScribble cvCreateImage cvSize 320 240 8 3 我得到
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

    目前 我的 EmguCV c 代码面临问题 我试图从数据库中识别我的图像 但它不起作用 一旦检测到我的脸 它就会崩溃 然后会出现此错误 附加信息 OpenCV 不同大小的对象 我尝试寻找这个错误 但我一无所知 这是我的代码 Action f
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 从视频/图像中提取元数据

    我从 IP 摄像机获取 MJPEG 流 我正在查看该流并将其保存在计算机上 可以找到我的操作代码here https stackoverflow com questions 21702477 how to parse mjpeg http
  • 如何计算立体视觉的基本矩阵

    我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系 我从大多数人推荐的 Hartley 和 Zisserman 书开始 但它没有任何实际示例 并且示例代码是在 MATLAB 中 而我没有 然后我切换到这个比较实用 里面有实际例子
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • 警告:发生了非法反射访问操作(java 中的便携式 opencv)

    我想做一个便携的opencv将依赖项添加到 maven 文件的应用程序pom xml 简化的代码是 import org opencv core Mat public class Builder public static void mai
  • 如何将k4a_image_t转换为opencv矩阵? (Azure Kinect 传感器 SDK)

    我开始尝试使用 Azure Kinect Sensor SDK 我经历了官方操作指南 https learn microsoft com en us azure Kinect dk about sensor sdk sensor sdk 我
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • 将向量 转换为大小为 (n x 3) 的 Mat,反之亦然

    我有 Point3d 向量 向量形式的点云 如果我使用 OpenCV 提供的转换 比如 cv Mat tmpMat cv Mat pts Here pts is vector
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • OpenCV 2.4 Jpeg 到 PNG(带 alpha 通道)

    我有一个 JPEG 和一个蒙版 我想创建一个具有三个 JPEG 通道的 PNG 并且 Alpha 通道应该是蒙版 如何使用 OpenCV 实现这一目标 Regards std vector
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 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