C # как найти изображение внутри большего изображения в течение 500-700 миллисекунд? - PullRequest
0 голосов
/ 12 октября 2019

Я работал над распознаванием изображений, которое захватывает экран с помощью растрового изображения в 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. image - это изображение, которое нужно найти в области 727, 115, как указано выше. Я пытался использовать aForge, Emgu и LockPixel, но я не смог преобразовать растровые изображения в правильный формат и никогда не заставлял его работать.

Есть предложения?

1 Ответ

0 голосов
/ 13 октября 2019

Растровые изображения и любые операции с изображениями вместе с рендерингом обрабатываются GDI + в .NET. GDI + хоть и быстрее, чем его предшественник GDI, но все же заметно медленнее. Кроме того, вы, похоже, выполняете операцию копирования, и это всегда будет означать снижение производительности. Если вам действительно нужно повысить производительность, вам не следует использовать инфраструктуру GDI +, это означает, что вы должны работать с битовыми картами напрямую и на более низком уровне. Однако это последнее утверждение очень широкое, потому что оно зависит от того, чего именно вы хотите достичь и как. Наконец, если вы хотите сравнить два изображения, вам следует избегать делать это попиксельно и вместо этого делать это побайтно, это быстрее, поскольку не нужно принимать во внимание ни формат индекса, ни кодирование значений.

...