Возьмите средний цвет экрана - 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)


arrow_upward
1
arrow_downward

Вы можете использовать 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