gpt4 book ai didi

c# - 在另一个图像中查找图像

转载 作者:可可西里 更新时间:2023-11-01 09:11:58 27 4
gpt4 key购买 nike

我正在尝试构建一个解决难题的应用程序(尝试开发图形算法),但我不想一直手动输入样本。

编辑:我不是要制作游戏。我正在尝试构建一个玩“SpellSeeker”游戏的代理

假设我在屏幕上有一张图片(见附件),里面有数字,我知道方框的位置,而且我有这些数字的确切图片。我想做的只是告诉相应的框上有哪个图像(数字)。

Numbers

所以我想我需要实现

bool isImageInsideImage(Bitmap numberImage,Bitmap Portion_Of_ScreenCap) 或类似的东西。

我试过的是(使用 AForge 库)

public static bool Contains(this Bitmap template, Bitmap bmp)
{
const Int32 divisor = 4;
const Int32 epsilon = 10;

ExhaustiveTemplateMatching etm = new ExhaustiveTemplateMatching(0.9f);

TemplateMatch[] tm = etm.ProcessImage(
new ResizeNearestNeighbor(template.Width / divisor, template.Height / divisor).Apply(template),
new ResizeNearestNeighbor(bmp.Width / divisor, bmp.Height / divisor).Apply(bmp)
);

if (tm.Length == 1)
{
Rectangle tempRect = tm[0].Rectangle;

if (Math.Abs(bmp.Width / divisor - tempRect.Width) < epsilon
&&
Math.Abs(bmp.Height / divisor - tempRect.Height) < epsilon)
{
return true;
}
}

return false;
}

但在这张图片中搜索黑点时返回 false。

我该如何实现?

最佳答案

我正在回答我的问题,因为我找到了解决方案:

this对我有用:

System.Drawing.Bitmap sourceImage = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\1.jpg");
System.Drawing.Bitmap template = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\2.jpg");
// create template matching algorithm's instance
// (set similarity threshold to 92.5%)

ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.921f);
// find all matchings with specified above similarity

TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template);
// highlight found matchings

BitmapData data = sourceImage.LockBits(
new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
ImageLockMode.ReadWrite, sourceImage.PixelFormat);
foreach (TemplateMatch m in matchings)
{

Drawing.Rectangle(data, m.Rectangle, Color.White);

MessageBox.Show(m.Rectangle.Location.ToString());
// do something else with matching
}
sourceImage.UnlockBits(data);

唯一的问题是找到该游戏的所有 (58) 个盒子。但是将值 0.921f 更改为 0.98 使其完美,即它只找到指定数字的图像(模板)

编辑:我实际上必须为不同的图片输入不同的相似度阈值。我通过尝试找到了优化值,最后我有一个类似的函数

float getSimilarityThreshold(int number)

关于c# - 在另一个图像中查找图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com