Java:使用Opencv进行大图找小图

2024-06-01 19:12

本文主要是介绍Java:使用Opencv进行大图找小图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文将介绍使用Java操作Opencv进行行大图找小图测试!

1、OpenCV简介

OpenCV是一个开源计算机视觉库,提供了丰富的图像处理和计算机规觉算法。它支持多种编程语言,包括Java本文将介绍如何在Java中使用OpenCV进行图像处理和计算机视觉任务。


2、引入安装

直接maven引入:

<dependency>
    <groupId>org.openpnp</groupId>
    <artifactId>opencv</artifactId>
    <version>3.4.2-1</version>
</dependency>

3、 算法

Java中进行大图找小图主要如下步骤:
1.导入Opencv库
2.加载图像
3.进行模板匹配
4.获取匹配结果
5.绘制匹配结果
6.显示结果

 4、代码

import java.net.URL;import nu.pattern.OpenCV;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;public class TestPicFind {public static void main(String[] args) {String sourceImg = "D:/source.png";String targetImg = "D:/target.png";new TestPicFind().testMatching(sourceImg, targetImg);}public void testMatching(String sourceImg,String targetImg) {// 1.导入Opencv库OpenCV.loadShared();// 2.加载图像Mat src = Imgcodecs.imread(sourceImg);// 待匹配图片Mat template = Imgcodecs.imread(targetImg);// 获取匹配模板// 3.进行模板匹配// 创建一个输出图像Mat outputImage = new Mat(src.rows(), src.cols(), src.type());Imgproc.matchTemplate(src, template, outputImage, Imgproc.TM_CCOEFF_NORMED);// 4.获取匹配结果,查找最大匹配值Core.MinMaxLocResult result = Core.minMaxLoc(outputImage);Point matchLoc = result.maxLoc;double similarity = result.maxVal; //匹配度int x = (int) matchLoc.x; //小图大大图中的x坐标int y = (int) matchLoc.y; //小图大大图中的y坐标System.out.println(x + "," + y + " similarity: " + similarity);//将查找到的结果标上框框Imgproc.rectangle(src,new Point(x,y),new Point(x+template.cols(),y+template.rows()),new Scalar( 0, 0, 255),2);//5.显示结果HighGui.imshow("模板匹配", src);HighGui.waitKey();}
}
图片如下:
1.target.png

 2.source.png

 运行结果:

1597,649 similarity: 0.9999993443489075

5、其他

OpenCV其他使用方式请见:OpenCV从入门到精通-CSDN博客

这篇关于Java:使用Opencv进行大图找小图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021876

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat