Autor Zpráva
Pavlínka
Profil
Zdravím, zajímalo by mě zda se dají nějak detekovat změny v obrázku něco jako u webkamery...

první co mě napadlo bylo porovnávat rozdíl velikosti obrázku vypočítat jaký rozdíl v bytech je o proti předchozímu obrázku
a podle toho učovat "detekci pohybu" ale ukázalo se že je to maximálně nespolehlivé...

druhé co mě napadlo je imagecolorat jenže tam se určuje barva konkrétného bodu a při obrázku 1200x1000px by bodů muselo být opravdu hodně
a takový výpočet by asi nebyl zrovna ideální...

nanapadá vás jak takovou detekci udělat?
Alphard
Profil
Moc konkrétně ten problém popsán není, ale obecně výpočtem derivace v časové posloupnosti intenzity daného pixelu.
Konkrétně by pro detekci pohybu bylo myslím nejlepší převést do stupňů šedi (aby byl jen jeden barevný kanál) a pak tato 2 dvourozměrná pole odečíst od sebe a prahovat.
Musí to být v PHP? Na tuto operaci se úplně nehodí. Jde o jednorázovou akci, nebo chcete třeba zpracovávat video?
Pavlínka
Profil
jde o webkameru která zaznamenává snímky a ukládá na ftp 1x za 10sekunt...

chtěla jsem udělat dettekci pohybu... zda je to vůbec možné...

mám to na klasickém hostingu takže php je asi jediná možnost (navíc jsem spíš začátečnice a v php se spíše učím, hledám na webu a tak :))

teď jsem našla na netu funkci:
function averageColor($sourceImage) {
    $image = imagecreatefromjpeg($sourceImage);
    $colors = array("r" => 0, "g" => 0, "b" => 0);
    $total = 0;
    for ($x = 0; $x < imagesx($image); $x++) {
        for ($y = 0; $y < imagesy($image); $y++) {
            $rgb = imagecolorat($image, $x, $y);
            $colors["r"] += ($rgb >> 16) & 0xFF;
            $colors["g"] += ($rgb >> 8) & 0xFF;
            $colors["b"] += $rgb & 0xFF;
            $total++;
        }
    }
    return array(
        round($colors["r"] / $total),
        round($colors["g"] / $total),
        round($colors["b"] / $total)
    );
}

která umí sjednotit barvy... a vypsat výslednou barvu...
pokouším se nyní obrázek oříznout o nebe strom a další části
a znovu zkusit co už jsem zkusila...
ale je to opět jen myšlenka...


po pravdě zkusit převést obrázek do šedé mě ani nenapadlo :D
ale děkuji za typ pohledám, zkusím...

celá věc není nijak důležitá, spíše si hraju s "vychytávkama"


ještě se zeptám na ty stupně šedi... google mě směruje stále na nějaké prográmky ale aby poradil nějakou funkci to nééé mrcha...
můžete trochu navést? nakopnout?

>>EDIT:
dalo to dost práce najít a tak kdyby někdo hledat jak na šedivý obrázek tak postačí imagefilter()

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: