Hi Ben,
nicht neidisch sein, nachbauen
.
Das ist ein Delphi Miniprogramm. Da lade ich das jpg ins Programm. Das wird in ein Bitmap umgewandelt. und das Bitmap gehe ich dann durch, um es zu analysieren.
Den selben Analysevorgang kann man aber mit jedem Frame der USB Kamera anstellen. Das ist der selbe Vorgang. Die Kameraframes liegen ja auch als Bitmaps vor. Und falls sie als jpgs daherkommen kann man sie in Bitmaps umwandeln lassen. Man sieht das aber, was die Kamera liefert, an bestimmten Variablen. Wenn man dann bei laufender Kamera die berechneten Ergebnisse grafisch anzeigen lässt und über das Kamerabild legt, dann schaut das nicht nur sehr cool aus, sondern man hat auch einen wirklich komfortablen Debuggingmechanismus.
Von dem Delphicode hättest du nix, weil das so direkt nicht in c umsetzbar ist. Ausserdem will ich laufend mitdiskutieren und auch was lernen. Schau dir besser nur den Algo ab und setz ihn in C um.
Code:
function rl(map1:tbitmap):tbitmap;
var i,j:integer;
p1,p2,pr:pbytearray;
res: tbitmap;
dist:integer;
begin
res:=tbitmap.Create;
res.Height:=map1.Height;
res.Width:=map1.width;
res.PixelFormat:=map1.PixelFormat;
for j:=0 to map1.Height-1 do
begin
pr:=res.ScanLine[j];
p1:=map1.ScanLine[j];
for i:=0 to (map1.Width-1) do
begin
dist := round(sqrt((sqr(p1[i*3]-0)+sqr(p1[i*3-0]-0)+sqr(p1[i*3+2]-255))/3));
dist:=round((dist*dist)/30);
if dist>255 then dist:=255 ;
pr[i*3]:=dist;
pr[i*3+1]:=dist;
pr[i*3+2]:=dist;
end;
end;
result:=res;
end;
Grundsätzlich ist die Bildanalyse für deine Aufgabenstellung so einfach, dass ich eine BA Bibliothek für eine unnötige Verkomplizierung halte.
Und ich meine nur mit selbst geschriebener BA kannst du die Verarbeitung für deine Zwecke zielgerichtet optimieren.
grüsse,
Hannes
Lesezeichen