|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.02.2010, 16:53 | #1 |
Регистрация: 06.02.2010
Сообщений: 3
|
Нужно ускорить GetPixel
Задача:
Снимать screenshot окна и распознавать изображения на нем. Время критично, т.к. делать это нужно часто, и окон может быть много. Текущее решение: HDC hdcWnd = GetWindowDC(hWnd); HDC newDC = CreateCompatibleDC(hdcWnd); HBITMAP bmp = CreateCompatibleBitmap(hdcWnd,imgWi dth,imgHeight); SelectObject(newDC,bmp); ReleaseDC(hWnd,hdcWnd); BOOL getWndResult = PrintWindow(hWnd,newDC,0); Далее происходит получение RGB методом GetPixel(newDC,x,y) по всему скриншоту и анализ изоображения. Проблема: Необходимо ускорить программу. Профилировка показала, что 90% времени занимает метод GetPixel. Вопрос: можно ли как-то ускорить получение цвета точек? |
06.02.2010, 17:35 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
CreateCompatibleBitmap меняем на CreateDIBSection и получаем указатель на биты. Задача решена.
|
06.02.2010, 17:49 | #3 |
Регистрация: 06.02.2010
Сообщений: 3
|
Спасибо. А можно уточнить ответ куском кода, который от CreateDIBSection приходит к RGB цвету в точке x,y?
|
06.02.2010, 18:18 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
1. MSDN - ищем описание функции там
2. В результате получаем scan0 - указатель на биты. 3. Как ни странно Pixel(x, y) = scan0 + ((height - 1 - y) * width + x) * pixelSize Тяжело не так ли ? p.s. так же внизу страницы есть информация по подобным темам |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
2 компа чтобы ускорить 1 | hammer.325 | Компьютерное железо | 5 | 20.01.2010 12:21 |
ускорить работу макроса | borik120 | Microsoft Office Excel | 12 | 19.01.2010 17:25 |
Pixels[][] или GetPixel(hdc,x,y) | Nick0 | C++ Builder | 5 | 12.12.2009 16:09 |
Как ускорить расчеты формул??? | Иванов_ДМ | Microsoft Office Excel | 7 | 02.09.2009 09:53 |
Как ускорить программу ? | juan666777 | Общие вопросы Delphi | 2 | 02.05.2009 19:48 |