【发布时间】:2019-08-13 06:23:34
【问题描述】:
class Program
{
static void Main(string[] args)
{
try
{
Bitmap pic1 = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\1new.jpg");
Bitmap pic2 = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\2new.jpg");
if (findIN(pic1, pic2))
{
Console.WriteLine("Found\n");
}
else
{
Console.WriteLine("Not Found\n");
}
}
catch(Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
static bool findIN(Bitmap pic1, Bitmap pic2)
{
bool found = false;
ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.91f);
TemplateMatch[] matchings = tm.ProcessImage(pic1, pic2);
BitmapData data = pic1.LockBits( new Rectangle(0, 0, pic1.Width, pic1.Height), ImageLockMode.ReadWrite, pic1.PixelFormat);
foreach (TemplateMatch m in matchings)
{
Drawing.Rectangle(data, m.Rectangle, Color.White);
if (m.Rectangle.Location.X >= 0 && m.Rectangle.Location.Y >= 0)
{
found = true;
Console.WriteLine("Upper Left : { X = " + (m.Rectangle.Location.X) + " , Y = " + (m.Rectangle.Location.Y) + " }");
Console.WriteLine("Bottom Right : { X = "+(m.Rectangle.Location.X + pic2.Width) + " , Y = " + (m.Rectangle.Location.Y + pic2.Height)+" }");
}
}
pic1.UnlockBits(data);
return found;
}
}
此程序在大图像1new.jpg 中查找图像2new.jpg,并返回其左上角(起始坐标)和下下角(结束坐标)。问题是这个程序太慢了,需要 13.126 毫秒才能运行(尤其是这部分:TemplateMatch[] matchings = tm.ProcessImage(pic1, pic2);)。您有什么想法/建议如何优化此功能?
【问题讨论】:
-
标题中的意思是压缩吗?
标签: c# image image-processing optimization