Программа для обнаружения изменения цвета одного пикселя? - PullRequest
2 голосов
/ 23 февраля 2012

Мне нужна программа, в которой я могу ввести координаты определенного пикселя на экране и, когда цвет этого пикселя изменится, что-то произойдет. (музыка, чтобы играть, в частности).

У меня есть MacBook, и я довольно новичок в программировании, какие-нибудь советы, как это сделать?

1 Ответ

0 голосов
/ 06 июля 2014

Я не знаю, как получить текущее изображение экрана в виде данных пикселей, но когда вы это сделаете, оно будет в виде примитивного массива (скорее всего, без знака).Массив может быть в любом из нескольких различных форматов, но наиболее распространенным является 4-байтовый RGBA, то есть каждый компонент получает 1 байт информации.Данные пикселей обычно располагаются в виде текста в книге: слева направо, сверху вниз.

Допустим, ваш пиксель находится в местоположении (x, y).Чтобы получить индекс данных пикселей, вам необходимо выполнить следующее:

int width;       //set to the width of the image
int height;      //set to the height of the image
int index;

//number of bytes per pixel * number of pixels per row * number of rows
index = 4 * width * y;     //get the index of the start of the correct row

//number of bytes per pixel * number of pixels to go across
index += 4 * x;            //get the index of the correct column in the row

// pixels[index] = red byte
// pixels[index + 1] = green byte
// pixels[index + 2] = blue byte
// pixels[index + 3] = alpha byte
// pixels[index - (any number)] = previous pixels
// pixels[index + (any number more than 3)] = future pixels

Теперь, когда вы знаете, как получить доступ к данным пикселей для определенного пикселя, просто сохраните значения RGBA дляданный пиксель в начале программы и при запуске программы иногда сравнивает текущий цвет с сохраненным цветом (используйте таймер).Когда они разные, делай что-нибудь (играй музыку).

Надеюсь, это поможет!

...