- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: ausführliches openCV Tutorial mit C/C++ für den Pi?

  1. #11
    HaWe
    Gast
    Anzeige

    E-Bike
    Zitat Zitat von RoboTrader Beitrag anzeigen
    Rubick's Cube!
    nein, ich brauche es zum Navigieren und Erkennen von Objekten für meinen Robobutler

    Klicke auf die Grafik für eine größere Ansicht

Name:	Robobutler 5.jpg
Hits:	15
Größe:	50,5 KB
ID:	33157

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    http://www.it-cow.de/post/Objekterke...OpenCV-22.aspx

    Hast du das schon gesehen? Was müsste doch in etwas sein, was du brauchst, oder?

    Objekterkennung steht bei mir noch nicht so weit oben auf meinem Plan. Ich arbeite mich gerade bei OpenCV in MLP ein, was auch schon halbwegs funktioniert. Mein eigens neurales Netz habe ich erst einmal auf Eis gelegt. Irgendwie will die Backpropergation nicht so wirklich und OpenCV bietet da, nach dem was man so hört, äusserst gute Lösungen für an. Auch mit CUDA und so.

    Ich habe mal mittels Tutorials Gesichtserkennung hinbekommen mit OpenCV. War eigentlich sehr einfach, schnell und hat echt gut funktioniert!

    Was ich im Moment mit OpenCV eben schon gelöst habe, ich ein kleines Spiel, in welchem ich das MLP durch reinforcement learning trainieren will. Erst danach baue ich einen Bot. Der soll zwar auch später eine Kamera bekommen, aber so weit bin ich noch nicht. Vielleicht kann ich dir aber trotzdem helfen, wenn es grundlegend um OpenCV geht.

  3. #13
    HaWe
    Gast
    Zitat Zitat von hirnfrei Beitrag anzeigen
    http://www.it-cow.de/post/Objekterke...OpenCV-22.aspx

    Hast du das schon gesehen? Was müsste doch in etwas sein, was du brauchst, oder?

    Objekterkennung steht bei mir noch nicht so weit oben auf meinem Plan. Ich arbeite mich gerade bei OpenCV in MLP ein, was auch schon halbwegs funktioniert. Mein eigens neurales Netz habe ich erst einmal auf Eis gelegt. Irgendwie will die Backpropergation nicht so wirklich und OpenCV bietet da, nach dem was man so hört, äusserst gute Lösungen für an. Auch mit CUDA und so.

    Ich habe mal mittels Tutorials Gesichtserkennung hinbekommen mit OpenCV. War eigentlich sehr einfach, schnell und hat echt gut funktioniert!

    Was ich im Moment mit OpenCV eben schon gelöst habe, ich ein kleines Spiel, in welchem ich das MLP durch reinforcement learning trainieren will. Erst danach baue ich einen Bot. Der soll zwar auch später eine Kamera bekommen, aber so weit bin ich noch nicht. Vielleicht kann ich dir aber trotzdem helfen, wenn es grundlegend um OpenCV geht.
    hallo,
    jein...: für Videos, nicht Bilder, und farbig, samt Methoden, um Objekte anlernen zu können, als fertiges Bilderkennungsmodul, denn die nackten openCV-Funktionen haben sich ja bisher als viel zu kompliziert und zu aufwändig erwiesen.

    Eher als High-Level-API, z.B. so, wie ich in der PixyCam-Software Farben und 2-3-farbige Labels anlernen kann, aber für den Raspi jetzt auch Formen und Muster - vom Ergebnis her wie in dem YOLO von Robotrader, aber offline verfügbar und mit selber trainierbaren Objekten:
    https://github.com/pjreddie/yolo-pap...ter/system.pdf
    oder von der Konzeption her vergleichbar hiermit (PixyCam mit PixyMon + Arduino oder Python):
    http://cmucam.org/projects/cmucam5/w...ke_an_Arduino)
    http://cmucam.org/projects/cmucam5/wiki/Latest_release
    oder hiermit (PiStorms Cam Software):
    http://builderdude35.com/2016/08/03/...and-pi-camera/

    : bis hierhin müsste das Programm samt API bereits als Bilderkennungsmodul fertig verfügbar sein, so wie für Pixy, PiStorms oder NXTCam:
    es streamt z.B. das, was es erkennt, automatisch über die serielle Schnittstelle wie auch bei den PixyCam-Examples über die Pixy() class;

    Jetzt erst kommt das eigene Programm, wo man per switch/case auf die erkannten und vom Bilderkennungsmodul seriell gestreamten Objekte (Farben, Formen, Schilder) je nach Bild-Position reagieren kann (nur auflisten oder auch hinfahren, wegfahren, umfahren, zentrieren, greifen,...) :

    z.B.:

    (ab 1:00 !)


    edit:
    Pixy ist leider doch keine Lösung, die Erkennungsalgorithmen und die Cam-CCD-Farbsensoren sind einfach zu schlecht;
    vgl.: http://www.mindstormsforum.de/viewto...p=71572#p71572
    Geändert von HaWe (26.02.2018 um 13:10 Uhr) Grund: Links++

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Na ja, Videos sind ja prinzipiell auch nur eine Aneinanderreihung von Bildern. Von daher müsste das verwendbar sein.

    Ich glaube aber, dass du bei OpenCV da schlechte Karten haben wirst, eine Funktion zu finden, welche dir sämtliche Arbeit abnimmt. Zumindest wäre mir in der Richtung nichts bekannt .

  5. #15
    HaWe
    Gast
    Zitat Zitat von hirnfrei Beitrag anzeigen
    Na ja, Videos sind ja prinzipiell auch nur eine Aneinanderreihung von Bildern. Von daher müsste das verwendbar sein.

    Ich glaube aber, dass du bei OpenCV da schlechte Karten haben wirst, eine Funktion zu finden, welche dir sämtliche Arbeit abnimmt. Zumindest wäre mir in der Richtung nichts bekannt .
    ja, ich denke auch, dass openCV höchstens das Werkzeug sein kann, mit dem jemand anderes so etwas schreibt. Gesucht wird tatsächlich eher etwas in der Art der oben verlinkten fertigen Bildauswertungsprogramme, wie sie für andere Plattformen und andere Programmiersprachen (Pixy, PiStorms, Arduino, Lego Software, Python) bereits verfügbar sind.

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Bist du dir sicher, dass du in C/C++ richtig aufgehoben bist? Du sagst, OpenCV kann nur ein Werkzeug sein. Das ist mit Sicherheit richtig. Aber darum geht es im Prinzip ja auch. Es bietet dir eine Vielzahl an Möglichkeiten, die du in deinem Programm nutzen kannst. Das heisst aber nicht, dass dir die Arbeit abgenommen wird. Beim Beispiel ObenCV wird dir schon einiges abgenommen. Es ist ein relativ simpler Weg, damit ein Programm zu schreiben, welches die Bilder einer Webcam abgreifen kann. Da bleibt dir also schon alles erspart, was du bei deinem Weg dorthin brauchst. Ich habe mal, noch zu Zeiten des Amigas, ein Programm geschrieben, mit welchem ich meine Digitalkamera auslesen konnte. Das war ganz schön aufwendig. Erst muss die Kommunikation geöffnet werden, was schon einiges an Code bedurfte, dann mussten die richtigen Befehle an die Kamera geschickt werden, natürlich im entsprechenden Format, ich musste die Rückgabe der Kamera abfangen, die Rohdaten zusammenfügen und dann noch ins jpeg Format speichern. Bei einer Webcam ist es jetzt nicht ganz so dramatisch. Aber auch da müsstest du normalerweise erst den USB-Port öffnen, die Daten empfangen usw. Das wird dir schon alles abgenommen.

    Ich glaube nicht, dass du in C/C++ viele Out-Of-The-Box APIs finden wirst, denn meiner Erfahrung nach wollen das Entwickler gar nicht. Man nehme nur mal einen Programmierer, der sich gänzlich Ansi-C verschrieben hat. Der kritisiert bereits C++, weil dort vieles vereinfacht wurde. String zum Beispiel ist so ein Kritikpunkt, da man null Kontrolle über die Nutzung des Speichers hat. Macht man es so, wie C es "gerne" hat, dann setzt man einen Pointer auf ein char, reserviert dafür Speicher, kopiert etwas in diesen Speicher und gibt es, nach Benutzung, wieder frei. Man weiss also genau, wann welche Variable wie viel Speicher belegt, da man sich um alles selbst kümmern muss. Das macht Anwendungen effizienter, wenn man sich an alle Regeln hält, aber der Programmieraufwand wächst natürlich stark. Da bietet C++ schon viel Abhilfe.

    Ich habe den Verdacht, dass du eher bei C#/Mono auf deine Kosten kommst. Oder eben Python. Wie du selbst sagst, dort gibt es das alles möglichst simpel.

  7. #17
    HaWe
    Gast
    Zitat Zitat von hirnfrei Beitrag anzeigen
    Bist du dir sicher, dass du in C/C++ richtig aufgehoben bist? Du sagst, OpenCV kann nur ein Werkzeug sein. Das ist mit Sicherheit richtig. Aber darum geht es im Prinzip ja auch. Es bietet dir eine Vielzahl an Möglichkeiten, die du in deinem Programm nutzen kannst. Das heisst aber nicht, dass dir die Arbeit abgenommen wird. Beim Beispiel ObenCV wird dir schon einiges abgenommen. Es ist ein relativ simpler Weg, damit ein Programm zu schreiben, welches die Bilder einer Webcam abgreifen kann. Da bleibt dir also schon alles erspart, was du bei deinem Weg dorthin brauchst. Ich habe mal, noch zu Zeiten des Amigas, ein Programm geschrieben, mit welchem ich meine Digitalkamera auslesen konnte. Das war ganz schön aufwendig. Erst muss die Kommunikation geöffnet werden, was schon einiges an Code bedurfte, dann mussten die richtigen Befehle an die Kamera geschickt werden, natürlich im entsprechenden Format, ich musste die Rückgabe der Kamera abfangen, die Rohdaten zusammenfügen und dann noch ins jpeg Format speichern. Bei einer Webcam ist es jetzt nicht ganz so dramatisch. Aber auch da müsstest du normalerweise erst den USB-Port öffnen, die Daten empfangen usw. Das wird dir schon alles abgenommen.

    Ich glaube nicht, dass du in C/C++ viele Out-Of-The-Box APIs finden wirst, denn meiner Erfahrung nach wollen das Entwickler gar nicht. Man nehme nur mal einen Programmierer, der sich gänzlich Ansi-C verschrieben hat. Der kritisiert bereits C++, weil dort vieles vereinfacht wurde. String zum Beispiel ist so ein Kritikpunkt, da man null Kontrolle über die Nutzung des Speichers hat. Macht man es so, wie C es "gerne" hat, dann setzt man einen Pointer auf ein char, reserviert dafür Speicher, kopiert etwas in diesen Speicher und gibt es, nach Benutzung, wieder frei. Man weiss also genau, wann welche Variable wie viel Speicher belegt, da man sich um alles selbst kümmern muss. Das macht Anwendungen effizienter, wenn man sich an alle Regeln hält, aber der Programmieraufwand wächst natürlich stark. Da bietet C++ schon viel Abhilfe.

    Ich habe den Verdacht, dass du eher bei C#/Mono auf deine Kosten kommst. Oder eben Python. Wie du selbst sagst, dort gibt es das alles möglichst simpel.
    ja, da hast du möglicherweise recht. Dennoch, was in Python an Libs/Modulen möglich und verfügbar ist, sollte IMO auch in C/C++ möglich sein. Python ist allerdings keine Option, da dreht sich mir (wie bei Java) bereits beim Hingucken der Magen um, und mit C# ist es nicht viel besser, wenn ich an meine ersten Gehversuche mit Monster-IDEs wie Visual Studio denke...

    Andererseits ist auch Arduino für GCC C++ geschrieben und stellt einfach zu benutzende "high level" C++ Libs zur Verfügung, u.a. auch für Pixy, also warum nicht auch ähnliches für den Pi und USB cams?

    edit:
    Pixy an sich ist übrigens leider keine Lösung, die Erkennungsalgorithmen und die Cam-CCD-Farbsensoren sind einfach zu schlecht;
    vgl.: http://www.mindstormsforum.de/viewto...p=71572#p71572
    Geändert von HaWe (26.02.2018 um 13:11 Uhr)

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Prinzipiell geht das schon. Nur eben, C/C++ soll ja prinzipiell auch nur ein Werkzeug sein. Du kriegst die Werkzeuge zur Hand und baust dir daraus das, was du haben willst. Man könnte es mit Modellbausätzen vergleichen. Assembler ist die härteste Variante. Da kriegst du im Baukasten nur einen Plan, alles andere musst du selbst erledigen. C/C++, da kriegst du dann die ganzen Einzelteile dazu, in Python usw. ist das halbe Modell schon zusammengebaut. Ist wohl die Frage, wie man es haben will.

    Es gibt zwei Möglichkeiten, wie du an das kommst, was du haben willst.

    Variante 1:

    Du klemmst dich soweit hinter C/C++, bis du dir aus den Werkzeugen deine eigene API zusammen bauen kannst (So mache ich es in der Regel)

    Variante 2:

    Du suchst jemand, der das für dich übernimmt.

    Denn ich glaube kaum, dass man OpenCV dazu bewegen wird, dass in Eigenregie zu machen. Sie können es, Python zeigt es ja. Aber in C/C++ ist es meines Erachtens nach eben in der breiten Mehrheit nicht erwünscht.

    Ich muss aber dazu sagen, der Magen dreht sich bei mir in vielerlei Hinsicht um. Python ist jetzt auch keine Sprache, die ich unbedingt benutzen möchte. Lua ist da noch brutaler, wie ich finde. Da liegt es daran, den inneren Schweinehund zu überwinden. Anfangs ist es ein Krampf, irgendwann gewöhnt man sich dran, auch wenn man es dann immer noch nicht mag. Vielleicht wäre es für dich mal einen Versuch Wert. Ich denke, wenn du mit Python eine Zwekehe eingehen würdest, könntest du viele Probleme umgehen, die letzten Endes überhaupt nichts mit deinem eigentlichen Projekt zu tun haben. Ich weiss, wie frustrierend das sein kann. Ich hatte mir so ein schönes Minispiel mit OpenCV gebastelt, wo ich dann mein neurales Netzwerk drauf loslassen wollte und musste dann feststellen, OpenCV ist da nicht flexibel genug. Das zeichnet das Fenster immer nur mittels waitkey(); neu. Ich hätte also jeden einzelnen Schritt per Tastatur quasi quittieren müssen. So ein neurales Netzwerk lernen zu lassen, wäre äusserst mühsam. Also habe ich einige Zeit damit verbracht, bis ich das mit OpenCV erstellte Bild in wxWidgets darstellen konnte und dann noch eine Zeit, bis sich das Bild auch wirklich nach jedem Durchgang aktualisiert hat. Hat mit dem eigentlichen Projekt 0 zu tun, verschlingt aber jede Menge Zeit .

  9. #19
    HaWe
    Gast
    Zitat Zitat von hirnfrei Beitrag anzeigen
    Prinzipiell geht das schon. Nur eben, C/C++ soll ja prinzipiell auch nur ein Werkzeug sein. Du kriegst die Werkzeuge zur Hand und baust dir daraus das, was du haben willst. Man könnte es mit Modellbausätzen vergleichen. Assembler ist die härteste Variante. Da kriegst du im Baukasten nur einen Plan, alles andere musst du selbst erledigen. C/C++, da kriegst du dann die ganzen Einzelteile dazu, in Python usw. ist das halbe Modell schon zusammengebaut. Ist wohl die Frage, wie man es haben will.

    Es gibt zwei Möglichkeiten, wie du an das kommst, was du haben willst.

    Variante 1:

    Du klemmst dich soweit hinter C/C++, bis du dir aus den Werkzeugen deine eigene API zusammen bauen kannst (So mache ich es in der Regel)

    Variante 2:

    Du suchst jemand, der das für dich übernimmt.

    Denn ich glaube kaum, dass man OpenCV dazu bewegen wird, dass in Eigenregie zu machen. Sie können es, Python zeigt es ja. Aber in C/C++ ist es meines Erachtens nach eben in der breiten Mehrheit nicht erwünscht.

    Ich muss aber dazu sagen, der Magen dreht sich bei mir in vielerlei Hinsicht um. Python ist jetzt auch keine Sprache, die ich unbedingt benutzen möchte. Lua ist da noch brutaler, wie ich finde. Da liegt es daran, den inneren Schweinehund zu überwinden. Anfangs ist es ein Krampf, irgendwann gewöhnt man sich dran, auch wenn man es dann immer noch nicht mag. Vielleicht wäre es für dich mal einen Versuch Wert. Ich denke, wenn du mit Python eine Zwekehe eingehen würdest, könntest du viele Probleme umgehen, die letzten Endes überhaupt nichts mit deinem eigentlichen Projekt zu tun haben. Ich weiss, wie frustrierend das sein kann. Ich hatte mir so ein schönes Minispiel mit OpenCV gebastelt, wo ich dann mein neurales Netzwerk drauf loslassen wollte und musste dann feststellen, OpenCV ist da nicht flexibel genug. Das zeichnet das Fenster immer nur mittels waitkey(); neu. Ich hätte also jeden einzelnen Schritt per Tastatur quasi quittieren müssen. So ein neurales Netzwerk lernen zu lassen, wäre äusserst mühsam. Also habe ich einige Zeit damit verbracht, bis ich das mit OpenCV erstellte Bild in wxWidgets darstellen konnte und dann noch eine Zeit, bis sich das Bild auch wirklich nach jedem Durchgang aktualisiert hat. Hat mit dem eigentlichen Projekt 0 zu tun, verschlingt aber jede Menge Zeit .

    edit, Ergänzung:
    gerade eben habe ich noch etwas anderes gefunden in der Art, wie ich es meine (vergleichbar auch mit PiStorms)- aber eben auch wieder nur in Python, nicht in C:



    Aber solange es nichts in C(++) für den Pi gibt was es mit Python/PiStorms oder Arduino-Pixy apps und libs aufnehmen kann, lass ich es lieber ganz - zuviel Aufwand.

    Pixy selbst ist übrigens leider keine Lösung, die Erkennungsalgorithmen und die Cam-CCD-Farbsensoren sind einfach zu schlecht;
    vgl.: http://www.mindstormsforum.de/viewto...p=71572#p71572
    Geändert von HaWe (26.02.2018 um 13:12 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. OpenCV & Pi Cam
    Von HeXPloreR im Forum Raspberry Pi
    Antworten: 20
    Letzter Beitrag: 23.04.2015, 20:11
  2. Raspberry Pi Cluster OpenCV
    Von robosapiens im Forum Raspberry Pi
    Antworten: 3
    Letzter Beitrag: 14.05.2014, 07:22
  3. Opencv
    Von Anix im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 0
    Letzter Beitrag: 01.04.2014, 14:19
  4. EmguCV (OpenCV) unter Windows 7 (64-Bit)
    Von Che Guevara im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 16.11.2012, 16:02
  5. OpenCV
    Von K.Hartmann im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 14
    Letzter Beitrag: 16.03.2010, 19:56

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen