java中的matchTemplate与openCV

2023-12-22

我有这样的代码:

Mat img = Highgui.imread(inFile);
Mat templ = Highgui.imread(templateFile);
int result_cols = img.cols() - templ.cols() + 1;
int result_rows = img.rows() - templ.rows() + 1;
Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1);
Imgproc.matchTemplate(img, templ, result, Imgproc.TM_CCOEFF);
/////Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
for (int i = 0; i < result_rows; i++)
for (int j = 0; j < result_cols; j++) 
  if(result.get(i, j)[0]>?)

     //match!

我需要解析输入图像以查找模板图像的多次出现。我想要得到这样的结果:

result[0][0]= 15%
result[0][1]= 17%
result[x][y]= 47%

如果我使用 TM_COEFF 所有结果都是 [-xxxxxxxx.xxx,+xxxxxxxx.xxx]

如果我使用 TM_SQDIFF 所有结果都是 xxxxxxxx.xxx

如果我使用 TM_CCORR 所有结果都是 xxxxxxxx.xxx

如何检测匹配或不匹配? if 的正确条件是什么? 如果我对矩阵进行归一化,则应用程序将值设置为 1,并且我无法检测模板是否未存储到图像中(全部不匹配)。

提前致谢


您可以将“_NORMED”附加到方法名称(例如:C++ 中的 CV_TM_COEFF_NORMED;在 Java 中可能略有不同)以获得适合您的目的的合理值。

我所说的“合理”是指您将获得 0 到 1 范围内的值,可以根据您的目的将其乘以 100。

注意:对于 CV_TM_SQDIFF_NORMED,它将在 -1 到 0 范围内,您必须从 1 中减去该值才能理解它,因为在此方法中使用的是最低值。

Tip:您可以使用 java 等价的 minMaxLoc() 来获取最小值和最大值。与 matchtemplate 结合使用时非常有用。 我相信“minMaxLoc”位于 Core 类内部。

这是一个 C++ 实现:

matchTemplate( input_mat, template_mat, result_mat, method_NORMED );

double minVal, maxVal; 

double percentage;

Point minLoc; Point maxLoc;

minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
if( method_NORMED == CV_TM_SQDIFF_NORMED )
{
   percentage=1-minVal;
}
else
{
   percentage=maxVal;
}

有用的 C++ 文档: 匹配模板描述以及可用方法:http://docs.opencv.org/modules/imgproc/doc/object_detection.html http://docs.opencv.org/modules/imgproc/doc/object_detection.htmlMinMaxLoc 文档:http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=minmaxloc#minmaxloc http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=minmaxloc#minmaxloc

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

java中的matchTemplate与openCV 的相关文章

  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • 从一个 Mat 复制到另一个 Mat 仅接近黑色像素

    I have Mat difference其中有一些黑色像素 或者几乎是黑色像素 gt 如果发生地震 建筑物会移动等 并且Mat current它由具有自然色彩的真实图像组成 我想替换中的像素Mat current这些黑色像素Mat dif
  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • 如何使用Java OpenCV

    我正在使用图像处理开始我的最后一年项目 并希望完成类似的事情this http www youtube com watch v EPai5f2sWaA 它是人体和物体检测的结合 我真的很想用 Java 来做 因为我在 C 方面的经验很少 I
  • 对同色像素块的边界进行着色

    我有一张有 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 从相机捕获视频并将其存储到 avi 文件 问题是当我完成捕获并运行 avi 文件时 视频流看起来速度很快 这是代码 void main CvCapture capture cvCaptureFromCAM 0 in
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • Android for OpenCV - 打开跟踪文件时出错,UnsatisfiedLinkError

    我对 Android 开发和 OpenCV 都是新手 我从 Android 下载了 OpenCV 库http sourceforge net projects opencvlibrary files opencv android http
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • 寻找两个框架之间的变换

    我有来自视频源的两个连续帧 并且我使用 FAST 算法检测这两个帧的关键点 我使用平方差之和法 SSD 来匹配关键点 所以基本上我已经匹配了两个框架之间的关键点 现在我想根据匹配的关键点集计算两个帧之间的仿射变换 缩放 旋转 平移 我知道如
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

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

随机推荐

  • 这些日志的 grok 模式应该是什么? (摄取 filebeat 的管道)

    我是 elasticsearch 社区的新人 我希望您能帮助我解决一些我遇到的困难 我的目标是使用 Filebeat 将大量日志文件发送到 Elasticsearch 为了做到这一点 我需要使用带有 Grok 模式处理器的摄取节点来解析数据
  • 如何读取图表区域内的文本框python pptx?

    我正在尝试使用自动化 pptpptx python图书馆 我正在使用模板 一些幻灯片中几乎没有图表 图表中有文本框 我尝试循环形状以获得shape id这些文本框 但我找不到shape id 当我尝试将文本框拖出图表区域时 它没有出现 文本
  • 在 Laravel 5.7 中的子域组内设置命名路由

    我一直在开发一个多租户应用程序 我正在尝试根据文档在子域中设置路由 https laravel com docs 5 7 routing route group sub domain routing https laravel com do
  • SpecRun 使用 @ignore 测试返回退出代码 120

    作为持续集成设置的一部分 从命令行运行 SpecRun 最近忽略了 ignore 测试在 SpecRun 完成时生成退出代码 120 目前 我们在任何不等于 0 的退出代码 通用成功指示器 上中断构建 退出代码 120 到底是什么意思 仅仅
  • 从 django 模型创建 javascript 对象(类)

    我正在开发一个单页应用程序 它将从大约十几个不同的 django 模型加载数据 允许用户操作数据 然后将所有更改保存回数据库 我可以通过序列化查询集的结果来将 django 模型 传递 到模板 例如 我有一个模型 Person class
  • 读取 ruby​​ 中的所有 shell 变量

    Problem 我正在将 shell 脚本作为 ruby 脚本中的子进程运行 运行脚本后我希望有一个选项来检查 shell 的所有环境变量 包括数组变量 到目前为止我已经想出了 set awk F BEGIN v 0 a zA Z a zA
  • Javascript/EcmaScript 3 支持 ISO 8601 日期解析吗?

    您目前如何解析 ISO8601 日期 例如2010 02 23T23 04 48Z在 JavaScript 中 使用下面的代码时 某些浏览器会返回 NaN 包括 Chrome 但 FF3 6 可以工作 你可以在这里尝试一下http www
  • C# Eval() 支持 [重复]

    这个问题在这里已经有答案了 我们需要在运行时评估对象中的值 同时我们有确切成员路径的文本语句 例如 myobject firstMember secondMember 3 text我们考虑使用正则表达式解析这个文本语句 然后使用反射评估文本
  • Scikit-Learn:所有训练示例中都存在标签而不是 x

    我正在尝试使用 SVM 进行多标签分类 我有近 8k 个特征 并且还有长度接近 400 的 y 向量 我已经有二值化的 Y 向量 所以我没有使用MultiLabelBinarizer 但是当我将它与 Y 数据的原始形式一起使用时 它仍然给出
  • R 中的关联度量——Kendall 的 tau-b 和 tau-c

    是否有用于计算 Kendall tau b 和 tau c 及其相关标准误差的 R 软件包 我在 Google 和 Rseek 上的搜索一无所获 但肯定有人已经在 R 中实现了这些 有three 肯德尔 tau 统计数据 tau a tau
  • 将 null 传递给“XslCompiledTransform.Transform”方法

    我正在尝试使用 XSL 转换 XML 文档 我不太熟悉如何在 NET 中转换 XML 所以我使用一些示例代码 XslCompiledTransform xslTransformer new XslCompiledTransform xslT
  • FlatMapMerge、FlatMapConcat 和 FlatMapLatest 之间有什么区别?

    我无法区分这三个运算符之间的确切区别 文档用于 平面地图合并 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow
  • 使用OpenCascade,如何快速进行2个形状的碰撞检测?

    使用OpenCascade 如何进行2个形状的碰撞检测 可能有几种方法 一是计算它们的交集 并检查交集结果 另一种方法是计算它们的最小距离 哪种方式更快 或者还有什么更快的方法 多谢 在 brep 数据结构上计算最小距离是一项相当昂贵的操作
  • jQuery Mobile 从弹出窗口中打开弹出窗口

    我正在使用 jQuery 移动1 9 1 min在 PhoneGap 上 我有一个列表 其中单击的每个项目都会打开一个操作弹出窗口 function showActions index selectedIndex index actionP
  • 获取 Foxpro 中目录中的文件列表

    如何在 FoxPro 中以编程方式获取目录中的文件列表 ADIR 使用任何通配符基于目录创建一个数组 local array MyFiles 1 5 nFilesFound ADIR MyFiles C Somepath dbf for i
  • Rails 2.3 的 EOL(生命周期终止)是什么?

    Rails 2 3 的 EOL 日期是哪一天 2 3 于 2013 年 6 月 25 日终止 同年 Rails 4 0 0 发布 据报道 只有 最后一个主要版本系列 才会收到补丁迈克尔 科齐亚斯基 https groups google c
  • Python在循环外获取变量

    我有一个 python 代码 我需要在 for 循环和 if 语句之外获取它的值并进一步使用该变量 My code with open text r as f for line in f readlines if hi in line a
  • 将 SQLAlchemy ORM 与 sql core 表达式中的对象连接起来?

    我必须使用 SQLalchemy Core 表达式来获取对象 因为 ORM 无法执行 更新和返回 ORM中的更新没有returning from sqlalchemy import update class User ORMBase pur
  • 在 OpenGL 引擎中组织 GLSL 着色器

    哪个更好 To 拥有一个包含大量制服的着色器程序指定 要使用的灯光或要执行的映射 例如 我需要一个网格进行视差映射 另一个网格进行视差 镜面映射 我会为延迟传输创建一个制服的缓存列表 并且如果需要的话 只需为每个下一个网格更改几个制服 To
  • java中的matchTemplate与openCV

    我有这样的代码 Mat img Highgui imread inFile Mat templ Highgui imread templateFile int result cols img cols templ cols 1 int re