Smoke

 
<<< Back

Определяем выключен ли свет по камере о_О

Узнаем выключен ли свет, анализируя цвет пикселей фото с камеры.

Возникла задача, перед постановкой на охрану хоть как то проверить выключили ли свет в офисе. Автоматовы там самые обычные, а мониторить хотя бы примерно как то надо.

Суть скрипта в том, что он заберает скрин с камеры, разбивает картинку на пиксели и циклом проходит по каждому пикселю, анализируя его цвет. А потом сравнивает насколько далеко между друг другом находятся цвета. Естесвенно подойдет не всем, у меня тут офис и уходят все поздно, поэтому когда выключают свет камера переходит в ЧБ режим.

Сама функция:

echo calculateColorSpaceValue(imagecreatefromjpeg('/var/www/html/cms/cached/telegram/cam_2.jpg'));

function calculateColorSpaceValue($imageHandle) {
    $RGBVariance = 0;

    //Перебираем все пиксели
    for($x = 0; $x < imagesx ( $imageHandle ); $x ++) {
        for($y = 0; $y < imagesy ( $imageHandle ); $y ++) {
            //Получаем цвет очередного пикселя
            $color = imagecolorat ( $imageHandle, $x, $y );
            //Разбираем его на RGB
            $r = ($color >> 16) & 0xFF;
            $g = ($color >> 8) & 0xFF;
            $b = $color & 0xFF;
            //Рассчитываем сумму разниц между R, G и B значениями
            $RGBVariance += (abs ( $r - $g ) + abs ( $r - $b ) + abs ( $r - $b ));
        }
    }

    //Возвращаем коэффициент вариации
    return round($RGBVariance / (imagesx ( $imageHandle ) * imagesx ( $imageHandle )), 2);
}

Вернет значение от 0 и выше, чем выше - тем больше цвето на картинке. С картинки камеры в ЧБ режиме значение у меня 0.73, с включеным освещением - 26.

Код не мой - нашел в инете и делюсь.

Discuss (1) (9)

See also:
2023-03-13 Debounce настройка в z2m
2023-03-06 Боремся с mysql и жором места на диске
2021-10-18 Опять прокси WS! Теперь для KeenDNS+NGINX
2021-09-19 Хитрый MJPEG или укрощение строптивого
2021-06-08 Парсим информер с Яндекс.Погоды
2021-01-13 Не разговаривает Алиса через облако?
2020-12-15 Разгоняем Xiaomi Home
2020-11-04 Проксирование WebSocket с wss:// -> ws://
2020-11-02 Как получить время езды до работы?
2020-06-02 Стилизация штатного редактора кода, часть 2
2020-06-01 Распознавание речи - бесплатно, просто, быстро.
2020-06-01 Стилизация штатного редактора кода
2020-01-29 Парсим данные баланса из ЛК Билайн (Update)
2020-01-28 Camshoter на свой лад
2020-01-21 Google Location + Yandex Maps, на свой лад
2020-01-19 Получение Я.Погоды из сценария
2020-01-17 Рассказ хейтера сцен в MJDM. Часть 2
2020-01-17 Как можно НЕ использовать сцены в MJDM. Часть 2
2020-01-16 Перезагружаем роутер Zyxel из MJDM
2019-12-12 Как подружить Camshoter и обычную вебку
2019-10-07 Управление планшетом из сцен/WEB
2019-10-07 Использование злосчастных WebSoccet
2020-01-17 ~DELETED~
2019-07-23 Как можно НЕ использовать сцены в MJDM. Часть 1.

Нижний Новгород, Россия

На форуме: SmoKE_xDDD