Hi Leut´s,
hat da schon jemand weiter gemacht?
Hat jemand etwas Quellcode in VB6 um zu spielen, hätte gerade etwas lust dazu :-)
by Ulli
Druckbare Version
Hi Leut´s,
hat da schon jemand weiter gemacht?
Hat jemand etwas Quellcode in VB6 um zu spielen, hätte gerade etwas lust dazu :-)
by Ulli
was heist den weiter gemacht ?
bei mir ist das bild holen und so fertig leider fehlt die Analyse *g*
ja bild holen tut bei mir jetzt auch, auch mit mehrern cams,
leider hab ich grosse probleme mit der Synchronisation der Callbackfunktionen, kennt sich da jmd aus? man startet ja den anderen Thread mit SetCallback, aber wie oft und wann der callback stattfindet kann man nicht festlegen oder? leider ist es so, dass der callback des ersten Graphen immer ca. doppelt so schnell ist wie der des 2... any ideas?
der beitrag ist von mir
ich denke das die callback immer dann auf gerufen werden wenn ein frame fertig gerendert ist. wie kommst du auf das es die häfte währe ?
was willst snycronisieren ?
ich will von 2 cameras immer gleichzeitig ein frame. bsp. 5 pro sekunde, die aber synchron.
das mit der hälfte ist geschätzt, ich hab testweise 2 callbacks gemacht (für jede cam eine,) und die jeweils 1 sek laufenlassen. in dem callback wird ein counter hochgezählt, der erste ist bei ca. 25 der zweite bei 12.
es wär halt cool wenn man den callback selber aufrufen könnte oder halt steuern könnte wann und wie oft, mit frames hat es wohl nix zu tun, 25fps hab ich nicht, nur 15 krieg aber 25 callbacks.
Hallo Gunfire,
arbeitest du mit SetCallback ?
http://msdn.microsoft.com/archive/de...rinterface.asp
dann ist klar warum es so unterschiedlich ist.
den die callback blockieren sich gegen seitig.
du hast recht in ein live stream kann man die häufigkeit nicht steuern
in der der Grapper auf gerufen wird.
Hast du mal probier wenn du ein PostMessage in die BufferCB machst ?
wie oft möchtest du den ein bild bzw wie viel schafst du in der Sek ?
setz dir doch einfach mal eine bool variable und nur wenn die Ture ist
postest du dir ein nachricht so wie in meinen beispiel oben.
gruß
ja das mit der variablen hab ich schon gemacht, dann bekomm ich wenigstens von jeder camera gleichviel, allerdings halt zeitlich versetzt.
"die callback blockieren sich gegen seitig.": heisst das die können nie gleichzeitig aufgerufen werden? Auch wenn ich 2 Callbacks habe, also 2 Klassen mit verschiedenen BufferCB?
das mit der Postmessage ist mir nicht ganz klar wo ich die Antwort zurückbekomme. Wo muss ich die abfangen?
mit welchem c++ programmierst du ?
der zeit versatz ist gut denn du wirst eh nie gleistig beide bilder verarbeiten können.
wenn du die bilder dann michen willst dann kannst du das immer noch tun
wenn du sie runter gerechnet hast.
visual c++,
nein der zeitversatz ist nicht gut, weil aus den bildern eine 180° Ansicht erstellt werden soll,
wenn die also nicht gleich würde dieses fertige bild dann recht komisch aussehen.
von microsoft ? mit MFC oder WTL ? oder nur api ?
die PostMessage kommt in dem fenster an wo du sie hin schickst PostMessage(handle vom fenster,.....)
oder PostThreadMessage(Thread_ID,......)
dann kommt sie im thread an.
in der MFC und in der wtl gibt es ein block wo nachichten zu proceduren / funktionen die auf gerufen werden soll. die funktion hat immer zwei werte WPARAM und LPARAM.
hier ist ein mfc beispiel vielleicht hilft es beim verstehen
http://www.henkessoft.de/mfc_einstei...h_kapitel5.htm
so morgen abend wieder freundin ruft
Gruß
Hi
Also ich habe mich auch schon sehr viel mit der digitalen Bildverarbeitung rumgeschlagen, und dazu folgendes Programm entwickelt.
Das Programm dient zum testen von Bildverarbeitungsalgorythmen, in einer schönen Umgebung.
Man Startet einfach das Programm, schreibt in einer "Scriptsprache" einfach ein paar Bildbearbeitungsalgorythmen nacheinander, jenachdem was man für ein Ergebniss haben will. Dann lädt man ein Bild, bzw. holt sich ein Bild von der Webcam, läßt die Algorythmen drüber laufen, und schaut sich das Ergebniss an.
Das ganze läuft bis jetzt schon ganz gut.
Und wenn man ein bißchen Ahnung von Programmieren und C++ hat, kann man auch eigene Bildbearbeitungsalgorythmen einbauen.
Ich hab mal ein paar Screenshots angehängt.
Wenn jemand interesse daran hätte, dann könnte ich das Programm gerne verschicken, und beim Einarbeiten helfen.
Der Sinn des Programms besteht darin, verschiedene Abfolgen von einzelnen Algorhythmen und deren Wirkungen auf unterschiedliche Bilder zu testen.
Mfg Reinhold Fischer
Anhängend: 2 Bilder des Programms
Hallo Crash32,
schöne ideen so was habe ich in meinem programm auch schon
drin. Leider kann ich nicht lesen welche algorythmen du schon hast.
Ich finde nicht nur das ergebnist zählt sonder auch die zeit wann es da ist
was nutz mir dein ergebnis was genial ist wenn die berechnug eine Stunde dauert.
Irgend wo in diesem Thread sind auch bilder die von mir erzeugt worden sind.
Wie holst du dir die bilder von der cam ? Video für windows oder directx ?
wie lange brauchst du für das Pferd ?
Wie ssieht das ergeniss auch wenn du ein kreis auf ein platt papier malst
und das vir die Cam hälst ?
Kannst du dann den kreis mittel punkt bestimmen ?
So könnte man die Ziel führung machen.
Gruß
Hi
Die Zeit wurde in diesem Programm absolut nicht beachtet, da der Zugriff auf die Bilder sehr speicherlastig ist.
Die Bilder hole ich mir über DirectX.
Wenn ich da einen Kreis mache, funktioniert es bei klaren kannten sehr gut.
Sonst muß man halt mehrere Verfahren drüberlaufen lassen.
Z.b eine Kantenerkennung, Segmentierung ( Region Growing ) usw.
um ein vernünftiges Ergebniss zu haben.
Mfg Reinhold Fischer
mir fehlt irgend wo der ansatz wie ich wenn der kreis da ist dann den mittel punkt zu bestimmen also zu erkennen per software das es ein kreis ist.
Du hast den source angeboten ich hätte interesse an dem MFC projekt.
Gruß
Das ist in meinem Code auch nicht drin, aber vielleicht hilft dir folgender Ansatz:
wenn du Kantenerkennung usw. hast drüberlaufenlassen, dann nimm dir eine Pixelmaske:
111
bsp:101
111
Mit dieser Maske läufst du jeden Pixel im Bild an.
Wenn jetzt der Pixel der in der Mitte ist kein Kantenpixel ist, dann überprüfst du, ob er auf einer Kante liegt. Zum Beispiel liegt er auf einer Kante, wenn links oben und rechts unten ein kantenpixel ist.
er ist kein Kantenpixel wnen z.b nur links unten und rechts unten Kantenpixel sind.
So bearbeitest du das ganze Bild. Der Sinn liegt darin, das Kanten, die durch Lücken in einer kante automatisch "geschlossen" werden.
Danach machst du mit jedem Kantenpixel auf dem Bild folgendes:
Wenn direkt neben dem Kantenpixel ein weiterer kantenpixel ist, dann gehst du zu diesem "Nachbarkantenpixel", dort überprüfst du das gleiche Nochmal, wobei du den Kantenpixel von dem du gekommen bist, nicht beachten darfst. Und das machst du solange bis die Kante entweder zuende ist ( kein Kantenpixel mehr vorhanden, außer der von dem man gekommen ist) oder du das Bild verläßt ( Kante geht über den Bildrand hinaus ) oder du eben zu deinem Ausgangspixel zurückkommst. In dem Fall hast du eine geschlossene kante entdeckt, die ein "Gebiet" auf dem Bild eingrenzt.
Nun gehst du mit jedem "Gebiet" folgendermaßen vor:
Untersuche die komplette Kante auf Ecken, wobei der Winkel der Ecken (90°==perfekte Ecke vom Viereck oder so; 40° z.b Ecke von Dreieck)
und die Auflösung in der du Untersuchst ausprobieren und anpassen mußt.
Denn um eine scharfe Ecke eines Dreiecks zu erkennen, mußt du relativ "nahe" an die Pixel, und mußt nur eine kleine Maske benutzen.
Um aber eine abgerundete Ecke eines Rechtecks zu erkennen, mußt du "weiter" raus.
Hört sich komisch an, aber ich denke so müßte das gehen.
Wenn du das alles gemacht hast, und keine Ecken in deinem "Rand" gefunden hast, dann ist es aller Wahrscheinlichkeit nach ein Kreis.
Nun zur Mittelpunkt bestimmung:
Da es ein Kreis ist, gibt es bei einem Bild immer 2 Kantenpixel, mit der gleichen y-Koordinate.
Ziehe eine "imaginäre" Linie von irgendeinem Kantenpixel zu seinem "gegenüber" ( der mit der gleich y-Koordinate ).
Jetzt machst du das gleiche mit der x-Koordinate und 2 Kantenpixeln.
Dabei suchst du die Linie raus, die jeweils in y-richtung und x-richtung den größten Abstand zwischen den beiden Kantenpixeln haben.
Und da wo sich diese beiden Linien treffen, ist der Mittelpunkt des Kreises bzw. der Ellipse.
Das ist nur so ein Ansatz der mir heut eingefallen ist, habe ihn nicht ausprobiert.
Schaut bitte nicht auf die Rechtschreibung, ist nicht so meine Stärke.
Mfg Reinhold Fischer
Zum Problem mit dem erkennen von Formen:
Also prinzipiell würde ich die Punkte umwandeln in linien (verbinde zwei punkte und prüfe, ob und wie viele punkti sich darauf befinden). Weiss zwar nich, wie das in vernünftiger zeit (rechenzeit) bewältigt werden soll. aber mal so hypothetisch. um zwei rechtwinklige linien ausfindig zu machen, wandle ich alle lienien in vektoren um und vergleiche immer zwei miteinander per skalarprodukt (falls 0 dann echtwinklig). weiter könnte mann noch prüfen, ob sich der schnittpunkt überhaupt im bild befindet, usw.
also ich will ja nicht sagen dass wisual basic blöd ist, aber ich kann mit meinem programm unter linux ein bild öffnen, kanten erkennen und zusammenhängende flächen erkennen... das alles in weit unter 1 sec...
hallo, ich fange mit visualbasic 5.0 an. ich möchte ein bild von der wintv-karte in die ablage legen (ca 2 bilder pro sec), das alte bild kann immer wieder überschrieben werden. dann möchte ich das/ein bild rausholen und auswerten und den robby über das easyfunkmodul steuern.
voraussetzung habe ich schon erstellt: videobild mit cmoscam s/w über funk zum pc. bild kann ich auch schon mit dem wintvprog2000 sehen. easy-funk zur steuerung des robby von einem visuellen steuerboard von visualbasic gehrt auch.
problem ist das bild in die ablage bringen und rausholen.
mfg pebisoft
Hallo pebisoft,
mit diesem Wort (WindowsAPI Befehl) "capCreateCaptureWindow" bei google suchen dann fidest du viele Beispiele habe leider kein VB sonder nur C++ und Delphi.
Mfg
moin
ihr habt alle probleme!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!
ich progge in c++ unter linux
bisher enthalten:
2x Kantenerkennung
Flächenerkennugn
Öffnen- und Speicherrutinen für ppm (P6 / P5) , HSV, capture devices
Weichzeichner
2x Differenzfilter (für Bewegungserkennung)
Betragsdiagramm (positionsunabhängige beschreibung von Objeckten)
in Arbeit:
Vecktor basierende Kantenbeschreibung für Objeckte
Rutinen für die bearbeitung von Stereo Bildern
...
ps: tipp an euch arbeitet doch mal gemeinsam an einem projeckt (cvs) in einer sprache
Du bist unser Held...
Anstatt uns zu zeigen, was deine Software kann, könntest du ja vllt konkrete Tipps bzw. Antworten zu den Fragen machen, die hier so auftauchen, z.B. "Wie bekomme ich das Bild am schnellsten / effizientesten aus der Kamera?"
Gruß, Trabukh
read => buffer => schleife => array
So kann man meinsch auch Mund tod machen.
aber wirklich was bringen tut das nicht. Schade das du nicht bereit bist zu helfen nach dem du ein Gott in der Grafic programmierung sein muß.
Mfg
also lieber gast, ohne quellcode (oder hilfen für andere) glaub zumindest ich dir mal garnix :P
edit: aber ein gemeisames projekt wär glaub ich wirklich vorteilhaft ..
das mit den gemeisamen Projekten würde ich auch begrüssen nur spricht meine er fahrung dagegen. nach dem ich jetzt schon das fünfte Projekt für die eine "Standart" Roboter software gesehen habe. Und alle die die geschrieben haben das sie mit machen wollen nix mehr tun.
Mal abgeshen von Johannes natürlich. Ich will nicht sagen das unsere lösung die beste ist aber ich denke da würde sich noch viel drauss machen lassen.
Oh ich schweife ab. Aber das mußte ich einfach mal schreiben.
@gast read array of farbe ist fertig die schleife ist auch da aber nicht ein vetor gib mal ansatz.
Mfg
Habt ihr euch eigentlich schonmal fertige Bibliotheken ala OpenCV oder LTIlib angesehen? (Habe ich das nicht schonmal gefragt ...)
Was meinst du in dem zusammenhang mit vector?Zitat:
read array of farbe ist fertig die schleife ist auch da aber nicht ein vetor gib mal ansatz.
Was ich meine sind Linen (Vetoren)
die Man dann Scalieren kann um formen zu erkennen.
Also Bild -> Array Of Byte (Ohne Farbe/Grau Stufen) -> Kanten erkennung
-> Vetoren -> Form erkennung.
Das Problem ist das bei mir die Kannten erkunng ewig dauert und die Ergebnisse erlich gesagt sehr zu wünschen übrig lassen.
Ähnliches Thema:
https://www.roboternetz.de/phpBB2/vi...?p=92261#92261
Und es muß hier auch noch ein Thread geben wo ich mal Bilder gepostet habe nur leider finde ich den gerade nicht