C# 如何在大约 500-700 毫秒内找到大图像内的图像?
C# how to find image inside larger image in around 500-700 milliseconds?
我一直在研究图像识别,它使用 winforms 中的位图每 700 毫秒在 727、115 区域抓取屏幕。 get set pixel 方法是一种减慢速度的方法,我发现我真的不知道如何使用任何其他方法。
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(896, 1250, 0, 0, bitmap.Size);
Bitmap myPic = Resources.SARCUT;
这样就在屏幕的区域创建了图片,myPic图片就是前面说的727、115区域需要找的图片。我试过使用 aForge、Emgu 和 LockPixel,但我无法将位图转换为正确的格式,而且一直无法正常工作。
有什么建议吗?
位图和任何图像操作,连同渲染,由 .NET 中的 GDI+ 处理。 GDI+ 尽管比其前身 GDI 更快,但速度仍然很慢。此外,您似乎正在执行复制操作,这将始终代表性能下降。如果你真的需要提高性能,你不应该使用 GDI+ 框架,这意味着你必须直接在较低级别上操作位图。然而,这最后一个陈述非常宽泛,因为它完全取决于您想要完成什么以及如何完成。最后,如果你想比较两个图像,你应该避免一个像素一个像素地比较,而是一个字节一个字节地比较,因为不需要考虑索引格式和值编码,所以速度更快。
我一直在研究图像识别,它使用 winforms 中的位图每 700 毫秒在 727、115 区域抓取屏幕。 get set pixel 方法是一种减慢速度的方法,我发现我真的不知道如何使用任何其他方法。
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(896, 1250, 0, 0, bitmap.Size);
Bitmap myPic = Resources.SARCUT;
这样就在屏幕的区域创建了图片,myPic图片就是前面说的727、115区域需要找的图片。我试过使用 aForge、Emgu 和 LockPixel,但我无法将位图转换为正确的格式,而且一直无法正常工作。
有什么建议吗?
位图和任何图像操作,连同渲染,由 .NET 中的 GDI+ 处理。 GDI+ 尽管比其前身 GDI 更快,但速度仍然很慢。此外,您似乎正在执行复制操作,这将始终代表性能下降。如果你真的需要提高性能,你不应该使用 GDI+ 框架,这意味着你必须直接在较低级别上操作位图。然而,这最后一个陈述非常宽泛,因为它完全取决于您想要完成什么以及如何完成。最后,如果你想比较两个图像,你应该避免一个像素一个像素地比较,而是一个字节一个字节地比较,因为不需要考虑索引格式和值编码,所以速度更快。