Java opencv模板匹配 缩放
时间: 2023-07-07 07:39:36 浏览: 55
在 Java 中使用 OpenCV 进行模板匹配时,如果模板与图像的尺寸不同,可以通过缩放模板来实现匹配。具体操作如下:
1. 导入 OpenCV 库,并读取模板和图像。
```
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat template = Imgcodecs.imread("template.png", Imgcodecs.IMREAD_GRAYSCALE);
Mat image = Imgcodecs.imread("image.png", Imgcodecs.IMREAD_GRAYSCALE);
```
2. 缩放模板,使其与图像尺寸相同。
```
double scalePercent = 60; // 缩放比例
Size size = new Size(template.width() * scalePercent / 100, template.height() * scalePercent / 100);
Imgproc.resize(template, template, size, 0, 0, Imgproc.INTER_AREA);
```
3. 进行模板匹配。
```
Mat result = new Mat();
Imgproc.matchTemplate(image, template, result, Imgproc.TM_CCOEFF_NORMED);
```
4. 找到匹配位置。
```
Core.MinMaxLocResult mmr = Core.minMaxLoc(result);
Point matchLoc = mmr.maxLoc;
Imgproc.rectangle(image, matchLoc, new Point(matchLoc.x + template.cols(), matchLoc.y + template.rows()), new Scalar(0, 255, 0), 2);
HighGui.imshow("Matched image", image);
```
其中,`scalePercent` 是缩放比例,可以根据实际情况进行调整。`Imgproc.INTER_AREA` 是缩放插值方法,可以根据实际情况选择不同的插值方法。