Как сделать захват экрана и сравнить с картинкой? Всем привет.
У меня есть фото, это фрагмент большого изображения экрана.
Нужно каждые 5-10 секунд делать скриншот экрана і искать фрагмент в скриншоте похож на тот что задан.
Никогда подобного не делал. Прошу помощи. Желательно на C# или Java.
Для прояснений:
1) програма запускает процесс
2) каждые 5-10 секунд делает скриншоте и ищет фрагмент что задан на сделаном скриншоте
3) по совпадению: убивает процесс и создает заново

21 Авг 2019 в 06:32
213 +1
0
Ответы
1

Для данной задачи можно использовать библиотеку Selenium WebDriver в C# или Java. Ниже приведен пример кода на C#:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.IO;
class Program
{
static void Main()
{
using (IWebDriver driver = new ChromeDriver())
{
driver.Url = "URL СТРАНИЦЫ";
while (true)
{
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile("screenshot.png", ScreenshotImageFormat.Png);
if (CompareImages("screenshot.png", "заданный_фрагмент.png"))
{
Process process = new Process();
process.StartInfo.FileName = "имя_процесса.exe";
process.Kill();
process.Start();
}
System.Threading.Thread.Sleep(5000); // пауза 5 секунд
}
}
}
static bool CompareImages(string screenshotPath, string fragmentPath)
{
byte[] screenshotBytes = File.ReadAllBytes(screenshotPath);
byte[] fragmentBytes = File.ReadAllBytes(fragmentPath);
if (screenshotBytes.Length != fragmentBytes.Length)
{
return false;
}
for (int i = 0; i < screenshotBytes.Length; i++)
{
if (screenshotBytes[i] != fragmentBytes[i])
{
return false;
}
}
return true;
}
}

В данном примере программа каждые 5 секунд делает скриншот экрана, сравнивает его с заданным фрагментом изображения. В случае совпадения, программа завершает указанный процесс и запускает его заново. Не забудьте подключить необходимые библиотеки (Selenium WebDriver) и указать правильные URL страницы, имя процесса и пути к изображениям.

Помните, что использование скриншотов для сравнения изображений может быть не самым эффективным способом из-за изменения картинки, например, из-за изменения цветов или уровня яркости. Возможно, будет лучше провести сравнение на уровне пикселей или специфических параметров изображения.

20 Апр в 13:16
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир