Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.96.135] |
|
Сообщ.
#1
,
|
|
|
Задача:
Снимать screenshot окна и распознавать изображения на нем. Время критично, т.к. делать это нужно часто, и окон может быть много. Текущее решение: HDC hdcWnd = GetWindowDC(hWnd); HDC newDC = CreateCompatibleDC(hdcWnd); HBITMAP bmp = CreateCompatibleBitmap(hdcWnd,imgWidth,imgHeight); SelectObject(newDC,bmp); ReleaseDC(hWnd,hdcWnd); BOOL getWndResult = PrintWindow(hWnd,newDC,0); Далее происходит получение RGB методом GetPixel(newDC,x,y) по всему скриншоту и анализ изоображения. Проблема: Необходимо ускорить программу. Профилировка показала, что 90% времени занимает метод GetPixel. Вопрос: можно ли как-то ускорить получение цвета точек? |
Сообщ.
#2
,
|
|
|
Конечно. Забудь про GetPixel и воспользуйся GetDIBits
|
Сообщ.
#3
,
|
|
|
Если не трудно, можно ли привести кусок кода, как через GetDIBits выйти на RGB цвет в точке x,y? Спасибо!
|
Сообщ.
#4
,
|
|
|
[C++] Работа с растровыми изображениями
Функция GetPixel |