Интересно, как решить эту проблему.Я хочу проверять каждые X секунд, если на экране содержится изображение (например, красная точка), и если да, вернуть True.Я очень хорошо знаком с Python, и там есть несколько простых решений.Но я еще не нашел аналогичного решения.
Что я в основном хочу сделать:
- Сделать снимок экрана
- Найти изображение X на снимке экрана
- Return bool
Заглянул в OpenCV и мог бы решить эту проблему таким образом, но это может быть немного чрезмерно.Я думал о том, чтобы getPixel перебрал все пиксели на экране.Но это очень медленно.
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
HWND runelite = GetForegroundWindow();
HMONITOR monitor = MonitorFromWindow(runelite, MONITOR_DEFAULTTONEAREST);
MONITORINFO info;
info.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(monitor, &info);
int monitor_width = info.rcMonitor.right - info.rcMonitor.left;
int monitor_height = info.rcMonitor.bottom - info.rcMonitor.top;
int r, g, b;
HDC screenshot = GetDC(NULL);
for (int i = 0; i < monitor_height; i++) {
for (int j = 0; j < monitor_width; j++) {
DWORD color = GetPixel(screenshot, j, i);
cout << "Scanning -> X: " << j << " Y: " << i << endl;
r = GetRValue(color);
g = GetGValue(color);
b = GetBValue(color);
if (r == 0 && g == 0 && b == 0) {
cout << "Button found by color!" << endl;
goto end;
}
}
}
end:
ReleaseDC(NULL, screenshot);
return 0;
}