Smoke

 
<<< Назад

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

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

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

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

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

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.

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

Обсуждение (1) (9)

Смотрите так же:
13.03.2023 Debounce настройка в z2m
06.03.2023 Боремся с mysql и жором места на диске
18.10.2021 Опять прокси WS! Теперь для KeenDNS+NGINX
19.09.2021 Хитрый MJPEG или укрощение строптивого
08.06.2021 Парсим информер с Яндекс.Погоды
13.01.2021 Не разговаривает Алиса через облако?
15.12.2020 Разгоняем Xiaomi Home
04.11.2020 Проксирование WebSocket с wss:// -> ws://
02.11.2020 Как получить время езды до работы?
02.06.2020 Стилизация штатного редактора кода, часть 2
01.06.2020 Распознавание речи - бесплатно, просто, быстро.
01.06.2020 Стилизация штатного редактора кода
29.01.2020 Парсим данные баланса из ЛК Билайн (Update)
28.01.2020 Camshoter на свой лад
21.01.2020 Google Location + Yandex Maps, на свой лад
19.01.2020 Получение Я.Погоды из сценария
17.01.2020 Рассказ хейтера сцен в MJDM. Часть 2
17.01.2020 Как можно НЕ использовать сцены в MJDM. Часть 2
16.01.2020 Перезагружаем роутер Zyxel из MJDM
12.12.2019 Как подружить Camshoter и обычную вебку
07.10.2019 Управление планшетом из сцен/WEB
07.10.2019 Использование злосчастных WebSoccet
17.01.2020 ~DELETED~
23.07.2019 Как можно НЕ использовать сцены в MJDM. Часть 1.

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

На форуме: SmoKE_xDDD