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

作者 : admin 本文共1555个字,预计阅读时间需要4分钟 发布时间: 2024-06-1 共3人阅读

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

1、OpenCV简介

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

2、引入安装

直接maven引入:

    org.openpnp
    opencv
    3.4.2-1

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

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

 2.source.png

Java:使用Opencv进行大图找小图插图(1)

 运行结果:

1597,649 similarity: 0.9999993443489075

Java:使用Opencv进行大图找小图插图(2)

5、其他

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

本站无任何商业行为
个人在线分享 » Java:使用Opencv进行大图找小图
E-->