Возьмите средний цвет экрана - Windows 7 C/C++

Я пытаюсь найти средний цвет пикселя всего экрана или части экрана в программе C/C++. Например, скажем, я хотел найти средний цвет пикселя координаты от 0,0 до 50, 500?

Моя цель - опрашивать весь экран, а не только одно окно фона.

Если это очень сложно в C/C++, я думаю, я мог бы использовать Python.

Любые предложения о том, что я могу использовать? Любой пример кода будет принят с благодарностью. Спасибо :)


person K. Barresi    schedule 11.01.2012    source источник
comment
С какой частью у вас проблемы? (1) чтение пикселей с экрана или (2) вычисление среднего значения группы пикселей?   -  person Greg Hewgill    schedule 11.01.2012
comment
Чтение пикселей. Я не уверен, что мне следует использовать, чтобы получить пиксель со всего экрана, а не только из окна.   -  person K. Barresi    schedule 11.01.2012


Ответы (1)


Вы можете использовать GetDC(NULL), чтобы получить HDC, относящийся ко всему экрану. Затем вы можете использовать BitBlt или другую функцию перемещения пикселей, чтобы получить пиксели с экрана в буфер, из которого вы можете читать.

person Greg Hewgill    schedule 11.01.2012
comment
Кажется, именно то, что я ищу! Спасибо, Грег. И отсюда какие-либо предложения о том, как вычислить средний цвет из буфера пикселей? - person K. Barresi; 11.01.2012
comment
Самый простой способ - взять среднее значение каждого канала R, G, B и использовать его в качестве вывода. Однако вы можете получить лучший результат, используя другое цветовое пространство, например HSV. Я искал средний цвет здесь, на SO, и получил много связанных вопросов. - person Greg Hewgill; 11.01.2012