对计算机视觉和自动化感兴趣。现在我想在另一个大图像上找到一个小图像。对于 Python,我见过大量的代码,并且一切都适合它们。 但是,由于某种原因,它对我不起作用。
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);
我认为您正在寻找的东西的源文件图像太大。看看你的程序找到的矩形:它比你用来容纳诱饵的矩形要大得多。
您应该将图像大小调整为您在大图片上看到的大小。如果该尺寸可以在游戏中改变(例如放大/缩小),请尝试检查不同的尺寸并选择最合适的。
(另外,我认为你最好把鱼饵的叶子部分切掉,因为这样你就包含了很多背景,可能是也可能不是水,你最好只看鱼饵的白色部分另外,把图片的绿色部分剪掉一些,因为从图片来看,诱饵可能也会有黄色、红色背景,这会给你带来问题,也许C#中有一种方法可以只导入去除背景的图像,并且只使用非背景部分进行计算?)