【问题标题】:C# how to find image inside larger image in around 500-700 milliseconds?C# 如何在大约 500-700 毫秒内找到较大图像中的图像?
【发布时间】:2019-10-12 11:20:48
【问题描述】:

我一直致力于图像识别,它使用 winforms 中的位图以 727、115 区域每 700 毫秒抓取屏幕。 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,但无法将位图转换为正确的格式,也无法正常工作。

有什么建议吗?

【问题讨论】:

标签: c# image winforms bitmap scanning


【解决方案1】:

位图和任何图像操作,连同渲染,都由 .NET 中的 GDI+ 处理。 GDI+ 虽然比它的前身 GDI 快,但它仍然很慢。此外,您似乎正在执行复制操作,这将始终代表性能下降。如果你真的需要提高性能,你不应该使用 GDI+ 框架,这意味着你必须直接在较低级别上操作位图。但是,这最后一个陈述非常广泛,因为它完全取决于您想要完成什么以及如何完成。最后,如果你想比较两个图像,你应该避免逐个像素地进行比较,而是逐个字节地进行比较,因为不需要考虑索引格式和值编码,所以速度更快。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2017-04-02
    • 1970-01-01
    • 2016-11-26
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多