-         

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: ausfhrliches openCV Tutorial mit C/C++ fr den Pi?

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beitrge
    2.554
    Anzeige

    Zitat Zitat von RoboTrader Beitrag anzeigen
    Rubick's Cube!
    nein, ich brauche es zum Navigieren und Erkennen von Objekten fr meinen Robobutler

    Klicke auf die Grafik fr eine grere Ansicht

Name:	Robobutler 5.jpg
Hits:	11
Gre:	50,5 KB
ID:	33157
    ≠≡≈αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrcken
    Beitrge
    326
    http://www.it-cow.de/post/Objekterke...OpenCV-22.aspx

    Hast du das schon gesehen? Was msste 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 hrt, usserst gute Lsungen fr 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 gelst 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 spter 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
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beitrge
    2.554
    Zitat Zitat von hirnfrei Beitrag anzeigen
    http://www.it-cow.de/post/Objekterke...OpenCV-22.aspx

    Hast du das schon gesehen? Was msste 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 hrt, usserst gute Lsungen fr 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 gelst 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 spter 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...: fr Videos, nicht Bilder, und farbig, samt Methoden, um Objekte anlernen zu knnen, als fertiges Bilderkennungsmodul, denn die nackten openCV-Funktionen haben sich ja bisher als viel zu kompliziert und zu aufwndig erwiesen.

    Eher als High-Level-API, z.B. so, wie ich in der PixyCam-Software Farben und 2-3-farbige Labels anlernen kann, aber fr den Raspi jetzt auch Formen und Muster - vom Ergebnis her wie in dem YOLO von Robotrader, aber offline verfgbar 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 msste das Programm samt API bereits als Bilderkennungsmodul fertig verfgbar sein, so wie fr 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 !)

    s.a. Auswertung per Pixy class (pixy.getBlocks(), pixy.blocks[].print(); etc.)


    Code:
    //
    // ...
    // This sketch is a good place to start if you're just getting started with 
    // Pixy and Arduino.  This program simply prints the detected object blocks 
    // (including color codes) through the serial console.  It uses the Arduino's 
    // ICSP port.  For more information go here:
    //
    // http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Ardu  ino)
    //
    // It prints the detected blocks once per second because printing all of the 
    // blocks for all 50 frames per second would overwhelm the Arduino's serial port.
    //
       
    #include <SPI.h>  
    #include <Pixy.h>
    
    // This is the main Pixy object 
    Pixy pixy;
    
    void setup()
    {
      Serial.begin(9600);
      Serial.print("Starting...\n");
    
      pixy.init();
    }
    
    void loop()
    { 
      static int i = 0;
      int j;
      uint16_t blocks;
      char buf[32]; 
      
      // grab blocks!
      blocks = pixy.getBlocks();
      
      // If there are detect blocks, print them!
      if (blocks)
      {
        i++;
        
        // do this (print) every 50 frames because printing every
        // frame would bog down the Arduino
        if (i%50==0)
        {
          sprintf(buf, "Detected %d:\n", blocks);
          Serial.print(buf);
          for (j=0; j<blocks; j++)
          {
            sprintf(buf, "  block %d: ", j);
            Serial.print(buf); 
            pixy.blocks[j].print();
          }
        }
      }  
    }
    Code:
    Detected 1:
      block 0: sig: 1 x: 159 y: 109 width: 61 height: 61
    Detected 1:
      block 0: sig: 1 x: 173 y: 114 width: 60 height: 61
    Detected 1:
      block 0: sig: 1 x: 146 y: 111 width: 70 height: 65
    ...
    Gendert von HaWe (08.01.2018 um 11:44 Uhr) Grund: Links++
    ≠≡≈αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrcken
    Beitrge
    326
    Na ja, Videos sind ja prinzipiell auch nur eine Aneinanderreihung von Bildern. Von daher msste das verwendbar sein.

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

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beitrge
    2.554
    Zitat Zitat von hirnfrei Beitrag anzeigen
    Na ja, Videos sind ja prinzipiell auch nur eine Aneinanderreihung von Bildern. Von daher msste das verwendbar sein.

    Ich glaube aber, dass du bei OpenCV da schlechte Karten haben wirst, eine Funktion zu finden, welche dir smtliche Arbeit abnimmt. Zumindest wre mir in der Richtung nichts bekannt .
    ja, ich denke auch, dass openCV hchstens das Werkzeug sein kann, mit dem jemand anderes so etwas schreibt. Gesucht wird tatschlich eher etwas in der Art der oben verlinkten fertigen Bildauswertungsprogramme, wie sie fr andere Plattformen und andere Programmiersprachen (Pixy, PiStorms, Arduino, Lego Software, Python) bereits verfgbar sind.
    ≠≡≈αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrcken
    Beitrge
    326
    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 Mglichkeiten, 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 schn aufwendig. Erst muss die Kommunikation geffnet werden, was schon einiges an Code bedurfte, dann mussten die richtigen Befehle an die Kamera geschickt werden, natrlich im entsprechenden Format, ich musste die Rckgabe der Kamera abfangen, die Rohdaten zusammenfgen und dann noch ins jpeg Format speichern. Bei einer Webcam ist es jetzt nicht ganz so dramatisch. Aber auch da msstest 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 gnzlich 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 dafr 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 kmmern muss. Das macht Anwendungen effizienter, wenn man sich an alle Regeln hlt, aber der Programmieraufwand wchst natrlich 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 mglichst simpel.

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beitrge
    2.554
    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 Mglichkeiten, 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 schn aufwendig. Erst muss die Kommunikation geffnet werden, was schon einiges an Code bedurfte, dann mussten die richtigen Befehle an die Kamera geschickt werden, natrlich im entsprechenden Format, ich musste die Rckgabe der Kamera abfangen, die Rohdaten zusammenfgen und dann noch ins jpeg Format speichern. Bei einer Webcam ist es jetzt nicht ganz so dramatisch. Aber auch da msstest 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 gnzlich 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 dafr 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 kmmern muss. Das macht Anwendungen effizienter, wenn man sich an alle Regeln hlt, aber der Programmieraufwand wchst natrlich 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 mglichst simpel.
    ja, da hast du mglicherweise recht. Dennoch, was in Python an Libs/Modulen mglich und verfgbar ist, sollte IMO auch in C/C++ mglich 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 fr GCC C++ geschrieben und stellt einfach zu benutzende "high level" C++ Libs zur Verfgung, u.a. auch fr Pixy, also warum nicht auch hnliches fr den Pi und USB cams?
    ≠≡≈αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrcken
    Beitrge
    326
    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 knnte es mit Modellbaustzen vergleichen. Assembler ist die hrteste 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 Mglichkeiten, 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 fr dich bernimmt.

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

    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 mchte. Lua ist da noch brutaler, wie ich finde. Da liegt es daran, den inneren Schweinehund zu berwinden. Anfangs ist es ein Krampf, irgendwann gewhnt man sich dran, auch wenn man es dann immer noch nicht mag. Vielleicht wre es fr dich mal einen Versuch Wert. Ich denke, wenn du mit Python eine Zwekehe eingehen wrdest, knntest 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 schnes 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 htte also jeden einzelnen Schritt per Tastatur quasi quittieren mssen. So ein neurales Netzwerk lernen zu lassen, wre usserst mhsam. 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
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beitrge
    2.554
    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 knnte es mit Modellbaustzen vergleichen. Assembler ist die hrteste 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 Mglichkeiten, 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 fr dich bernimmt.

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

    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 mchte. Lua ist da noch brutaler, wie ich finde. Da liegt es daran, den inneren Schweinehund zu berwinden. Anfangs ist es ein Krampf, irgendwann gewhnt man sich dran, auch wenn man es dann immer noch nicht mag. Vielleicht wre es fr dich mal einen Versuch Wert. Ich denke, wenn du mit Python eine Zwekehe eingehen wrdest, knntest 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 schnes 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 htte also jeden einzelnen Schritt per Tastatur quasi quittieren mssen. So ein neurales Netzwerk lernen zu lassen, wre usserst mhsam. 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, Ergnzung:
    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(++) fr den Pi gibt was es mit Python/PiStorms oder Arduino-Pixy apps und libs aufnehmen kann, lass ich es lieber ganz - zuviel Aufwand.
    Gendert von HaWe (14.01.2018 um 11:26 Uhr)
    ≠≡≈αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

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
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •