#!/usr/bin/perl # watch.pl use strict; use warnings; use ImgSum; use LWP::Simple; use SumDiff; use Storable; my @refs = map {retrieve($_)} ('sum-r0.dat', 'sum-r1.dat'); sub min { my $mni = 0; for my $i(0..$#_) { if ($_[$i] < $_[$mni]) { $mni = $i } } return $mni; } sub getclass { my $test = shift; my @diffs; for my $i(0..$#refs) { my $diff = SumDiff::diffavg($refs[$i], $test); $diffs[$i] = $diff; print "Difference to $i: $diff\n"; } return min(@diffs); } my $lc = 1; while (sleep 2) { my $stat = getstore('http://localhost:45005/webcam.jpg', 'current.jpg'); print "HTTP status: $stat\n"; my $sum = ImgSum::summary('current.jpg', 4); my $cl = getclass($sum); print "Likely class: $cl\n"; if ($lc != $cl) { system('xscreensaver-command ' . ($cl?'-deactivate':'-activate')); $lc = $cl; } }