Hallooo,
kurz nachdem die FTP-Sache gelöst ist komme ich nun wieder mit einer
weiteren Idee
Also, folgendes,
Laptop - Webcam eingebaut - Idee: Bilderkennung.
Ich hab mir gedacht, vielleicht kann ich ja ein Script erkennen lassen,
wer sich gerade vor meinem PC befindet ?
Bild mit der Cam aufnehmen, - kein Problem, aber:
Das Vergleichen der Bilder macht mir Probleme. Ich will die ja nicht irgentwie anzeigen
lassen und mit PixelGetColor auf markante Stellen prüfen, das ganze soll ja
im Hintergrund ablaufen.
Folgenden Ansatz habe ich mir überlegt:
Spoiler anzeigen
Func _pic_compare( $file1, $file2, $points = 100 )
$pic1 = Binary( FileRead( $file1 ) )
$pic2 = Binary( FileRead( $file2 ) )
$l = _slen( $pic1, $pic2 )
$points = Int( $points )
If $points <= 0 Or $points >= Int( $l/2 ) Then
SetError(-1)
Return -1
EndIf
$steps = Int(( ($l- 2*$points) / $points ))
Dim $ar[$points][2]
$pos = 1
For $i = 0 To $points-1
ToolTip( $i+1 )
$wr1 = Dec( StringMid( $pic1, $pos, 2 ) )
$wr2 = Dec( StringMid( $pic2, $pos, 2 ) )
$c = _slen( $wr1, $wr2 )
If $c <> 0 Then
If $c = 1 Then
$wr1 = Round( $wr1, 0 )
$wr2 = Round( $wr2, 0 )
Else
$wr1 = Round( $wr1, -1 )
$wr2 = Round( $wr2, -1 )
EndIf
EndIf
$pos = $pos + $steps
$ar[$i][0] = $wr1
$ar[$i][1] = $wr2
Next
;_ArrayDisplay( $ar )
$equal = 0
For $i = 0 To $points-1
If $ar[$i][0] = $ar[$i][1] Then $equal += 1
Next
Return $equal
EndFunc
Func _slen( $a, $b )
$a = StringLen( $a )
$b = StringLen( $b )
If $a < $b Then Return $a
Return $b
EndFunc
Ich lese die Bilder binär ein, schnappe mir in regelmäßigen Abständen je 2 Zeichen,
wandle diese in eine Decimalzahl um, runde und vergleiche
$equal ist dann die Anzahl übereinstimmender Punkte.
Klingt kompliziert, ist es auch und absolut .. unwirksam.
Dauert lange und wenn ich meinen Daumen fotografiere habe ich
mehr übereinstimmende Punkte als wenn ich 2 fast identische Fotos nehme
Hat da vll jemand eine Idee ? =)
mfg limette