Узнаем выключен ли свет, анализируя цвет пикселей фото с камеры.
Суть скрипта в том, что он заберает скрин с камеры, разбивает картинку на пиксели и циклом проходит по каждому пикселю, анализируя его цвет. А потом сравнивает насколько далеко между друг другом находятся цвета. Естесвенно подойдет не всем, у меня тут офис и уходят все поздно, поэтому когда выключают свет камера переходит в ЧБ режим.
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.
Код не мой - нашел в инете и делюсь.
Нижний Новгород, Россия
На форуме: SmoKE_xDDD