[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bildhelligkeit messen



Frank Lassowski schrub:
> Michael Limburg schrub:
>> Am 26. Februar 2010 schrieb Frank Lassowski:
>>
>>> Ich werde dieses Jahr per Webcam unser Storchenhorst ins Netz stellen. Da
>>> ist es natürlich sinnvoll nur bei Tageslicht Aufnahmen zu machen und
>>> nachts etwas anderes auf der Webseite anzubieten. Dazu möchte ich
>>> periodisch feststellen, ob auf einem Webcam-Bild noch irgendetwas zu
>>> erkennen ist. Ich denke, dafür eignet sich z.B. die Helligkeit des Bildes.
>> Nun, es gibt verschiedene Möglichkeiten..
>>
>> 1. Helligkeitsmittelwert über's Bild bilden und Schwelle festlegen. Wenn
>>     man nicht das komplette Bild betrachten möchte, kann man ja ein
>>     paar markante Spots (Pixel mit Umgebung). Das verringert den 
>>     Rechenaufwand und ist dementsprechend schnell.
> 
> Das von Manne erwähnte identify aus ImageMagick liefert vielleicht die
> Bildinformation, die ich möchte, nämlich "Standard deviation".

Das hab ich jetzt mal probiert, funktioniert einwandfrei.


>> 3. Man kann den Sonnenstand/untergang berechnen. Im WWW gibt es
>>     auch Tabellen dafür. 2 Werte pro Woche sollten da reichen. Die kann
>>     man ja auch noch an die Empfindlichkeit der Webcam anpassen.
> 
> Jo, das wäre natürlich viel eleganter.
> ...
> Außerdem gibt es ja sogar ein passendes perl-Modul:
> libdatetime-event-sunrise-perl

Noch viel schöner: date_sunrise und date_sunset in php

http://php.net/manual/en/function.date-sunrise.php
http://php.net/manual/en/function.date-sunset.php


<?php
echo date_sunrise(time(), SUNFUNCS_RET_STRING, 52.2, 9.0, 90+5/6, 1)," ";
echo date_sunset(time(), SUNFUNCS_RET_STRING, 52.2, 9.0, 90+5/6, 1);
?>

Das Ganze 2mal pro Woche ausführen, crontab entsprechend anpassen lassen
und feddisch:

--------------------------------------------------
#!/bin/bash

cd /var/spool/cron/crontabs

times=`wget -q -O - "http://localhost/sunrise.php"`

risestd=`echo "${times}" | cut -c 1-2`
risemin=`echo "${times}" | cut -c 4-5`
setstd=`echo "${times}" | cut -c 7-8`
setmin=`echo "${times}" | cut -c 10-11`

# Zeilen mit "cam_" aus der crontab löschen
sed -i '/cam_/d' root

echo $risemin $risestd" * * *     /usr/sbin/cam_up" >> root
echo $setmin $setstd" * * *     /usr/sbin/cam_down" >> root

crontab root
--------------------------------------------------

Vielen Dank für die Hilfe!
Gruß
Frank



Reply to: