使用 OpenCvSharp 进行图像检测 - C#

问题描述 投票:0回答:1

计算机视觉和自动化感兴趣。现在我想在另一个大图像上找到一个小图像。对于 Python,我见过大量的代码,并且一切都适合它们。 但是,由于某种原因,它对我不起作用。

源文件: enter image description here enter image description here

var sourceImage = Cv2.ImRead("path");
var template = Cv2.ImRead("path");

var resultImage = new Mat();

Cv2.MatchTemplate(sourceImage, template, resultImage, TemplateMatchModes.CCoeffNormed);
Cv2.MinMaxLoc(resultImage, out _, out double maxVal, out _, out OpenCvSharp.Point maxLoc);

Rect rect = new Rect(maxLoc, new Size(template.Width, template.Height));
Cv2.Rectangle(sourceImage, rect, new Scalar(0, 255, 0), 2);

Cv2.ImShow("Result", sourceImage);
Cv2.WaitKey(0);

这就是结果 enter image description here

c# opencv computer-vision
1个回答
0
投票

我认为您正在寻找的东西的源文件图像太大。看看你的程序找到的矩形:它比你用来容纳诱饵的矩形要大得多。
您应该将图像大小调整为您在大图片上看到的大小。如果该尺寸可以在游戏中改变(例如放大/缩小),请尝试检查不同的尺寸并选择最合适的。

(另外,我认为你最好把鱼饵的叶子部分切掉,因为这样你就包含了很多背景,可能是也可能不是水,你最好只看鱼饵的白色部分另外,把图片的绿色部分剪掉一些,因为从图片来看,诱饵可能也会有黄色、红色背景,这会给你带来问题,也许C#中有一种方法可以只导入去除背景的图像,并且只使用非背景部分进行计算?)

© www.soinside.com 2019 - 2024. All rights reserved.