- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Schnelle(!) Objekterkennung mit Raspi+USB-Cam

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Das lustige ist, dass so viele Leute zum Holen des Bildes von der Kamera ohne irgendwelche anderen Algorithmen schon nur 3-4fps haben. Beim OP wird das jetzt schneller gehen, wenn er wirklich bei jedem Durchlauf die Kamera initialisiert hat, aber das gilt für viele der anderen Leidensgenossen nicht. OpenCV scheint da sehr verschwenderisch mit den Resourcen umzugehen.

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2006
    Beiträge
    18
    OK, danke. Das Initialisieren hatte ich leider nicht in der Schleife. Habe mich vertippt. Schade eigentlich. Die Lösung wäre einfach gewesen.

    Hier mein Code. Ich mache das in der Schleife. Danach gehe ich durch die Elemente in contour. Es werden sehr viele gefunden. Das macht alles sehr langsam. Wo ist der Fehler!?

    Code:
                color_image = cv.QueryFrame(self.capture)
                cv.Smooth(color_image, color_image, cv.CV_GAUSSIAN, 3, 0)
                cv.Threshold(grey_image, grey_image, 70, 255, cv.CV_THRESH_BINARY)
                down = cv.Scalar(10,100,100,0) # cv.Scalar(30,100,100) # 
                up = cv.Scalar(40, 255,255,0) #(35,255,255)
                imghsv=cv.CreateImage(cv.GetSize(color_image),8,3)
                cv.CvtColor(color_image,imghsv,cv.CV_BGR2HSV)                # Convert image from RGB to HSV
            
                imgyellow=cv.CreateImage(cv.GetSize(color_image),8,1)
                imgthreshold=cv.CreateImage(cv.GetSize(color_image),8,1)
                cv.InRangeS(imghsv,down,up,imgyellow)    # Select a range of yellow color
                storage = cv.CreateMemStorage(0)
                contour = cv.FindContours(imgthreshold, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)

  3. #13
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Zitat Zitat von ichbinsisyphos Beitrag anzeigen
    Das lustige ist, dass so viele Leute zum Holen des Bildes von der Kamera ohne irgendwelche anderen Algorithmen schon nur 3-4fps haben. Beim OP wird das jetzt schneller gehen, wenn er wirklich bei jedem Durchlauf die Kamera initialisiert hat, aber das gilt für viele der anderen Leidensgenossen nicht. OpenCV scheint da sehr verschwenderisch mit den Resourcen umzugehen.
    OpenCV ist hier eher resourcenschonend. Meist ist das Problem nicht die Software sondern die Verbindung. Bsp. USB 1 statt USB 2. Auch in der industriellen Bildverarbeitung ist das reine Bild einziehen meist sehr untergeordnet. Die Anzeigealgorithmen haben bsp. nichts mit dem Bildeinzug gemein. Wenn es um den Bildeinzug geht, eben nur einziehen und nicht anzeigen. Hier ist dann auch nochmal ein Flaschenhals. Bsp. nicht funktionierende Hardwarebeschleunigung.

    Gruß
    Georg

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2006
    Beiträge
    18
    Ich habe die hier http://download.p4c.philips.com/file...00_pss_deu.pdf
    Der Code dort oben kommt auf 10 fps. Problem ist, das Durchlaufen durch die "contour" (Liste).

    Code:
         while contour:
    
                    bound_rect = cv.BoundingRect(list(contour))
                    contour = contour.h_next()
    
                    pt1 = (bound_rect[0], bound_rect[1])
                    pt2 = (bound_rect[0] + bound_rect[2], bound_rect[1] + bound_rect[3])
                    points.append(pt1)
                    points.append(pt2)
                    centroidx=cv.Round((pt1[0]+pt2[0])/2)
                    centroidy=cv.Round((pt1[1]+pt2[1])/2)
                    centroid = (centroidx, centroidy)
                if len(points):
                    radius = abs(pt1[0]-pt2[0])/2 
                    if True: #radius > 2 and radius != 159:
                        self.centroid = centroid
                        self.radius = radius
                        if self.gui is True:
                            cv.Circle(color_image, centroid , radius , cv.CV_RGB(255,0,0), 1)
                            cv.Rectangle(color_image, pt1, pt2, cv.CV_RGB(255,0,0), 1)
                            cv.PutText(color_image, str(centroid)+" r="+str(radius), centroid, cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 1), cv.CV_RGB(255,0,0))
    #                    print str(centroid)+" r="+str(radius)
                    else:
                        self.centroid = None
                        self.radius = None

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    01.04.2005
    Beiträge
    84
    Auf meinem Core2Duo mit 1.8GHz schafft der Code im Anhang (deine Schnipsel halbwegs lauffähig gemacht) mit Anzeigefenster auch nur ~22 Frames/s mit einer Playstation Eye (640x480, 30fps), ohne die contour-Liste immerhin 24fps. Ohne Gui schafft er in beiden Fällen fast 30fps. Die 4 fps auf der RasPi scheinen also leider realistisch.
    Ein winziges Stück mehr Geschwindigkeit brachte es, das cv.CreateMemStorage(0) vor die Endlos-Schleife zu setzen.
    Angehängte Dateien Angehängte Dateien
    • Dateityp: txt 1.txt (2,8 KB, 12x aufgerufen)

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2006
    Beiträge
    18
    ich könnte mir vorstellen, dass in contour einfach zu viele Objekte drin sind. Vielleicht kann man irgendwie in der Richtung optimieren.

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2006
    Beiträge
    18
    9 fps mit folgendem Code.

    Code:
    import cv2
    import cv as cv
    import numpy as np
    import time
    
    show = False
    
    c = cv2.VideoCapture(0)
    c.set(3, 320)
    c.set(4, 240)
    width,height = c.get(3),c.get(4)
    print "width, height = ", width, ",", height
    
    start_time = time.time()
    i = 0
    while(1):
        _,f = c.read()
    
        #f = cv2.flip(f,1)
        #blur = cv2.medianBlur(f,5)
        hsv = cv2.cvtColor(f,cv2.COLOR_BGR2HSV)
        yellow = cv2.inRange(hsv,np.array((20,100,100)),np.array((30,255,255)))
        erode = cv2.erode(yellow,None,iterations = 3)
        dilate = cv2.dilate(erode,None,iterations = 10)
        contours,hierarchy = cv2.findContours(dilate,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    
        for cnt in contours:
            x,y,w,h = cv2.boundingRect(cnt)
            cx,cy = x+w/2, y+h/2
           
            print "yellow :", x,y,w,h
            if show:
                cv2.rectangle(f,(x,y),(x+w,y+h),[0,255,255],2)
                cv2.imshow('img',f)
                if cv2.waitKey(25) == 27:
                    break
    
    cv2.destroyAllWindows()
    c.release()

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2014
    Beiträge
    6
    Hey hi Leute!!!

    Ich bin neu zu diesem Forum. Ich bin ein student des Studiengang Mechatronik und bin gerade an der Arbeit mit Bilderkennung der Balle.

    Ich arbeite mit Matlab-Simulink.

    Ich kann Kreise erkennen, aber die Balle ist immer noch schwer.

    Sag mal bitte ein paar Tips und Tricks!!!

    Danke im Vorraus,

    Gruß
    Mandar

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    16.03.2006
    Beiträge
    18
    Hallo,

    ich verstehe die Frage nicht.
    Was ist der Unterschied zwischen einem Kreis im Bild und einem Ball?
    Vielleicht, dass der Ball aufgrund der 3D-Form "unterschiedliche Farben hat"? Vielleicht brauchst Du dafür Schwellwerte (siehe cv2.inRange() in meinem Code)

    Viele Grüße

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2014
    Beiträge
    6
    Ja, du hast es recht. Es gibt kein Unterschied ywischen ein Ball und ein Kreis. Ich benutze zur Zeit Matlab R2012a aber will Opencv2.4.8 benutzen. Kann jemand mir die 'Installations Procedure' erzählen. Ein English link würde Super Geil!!! Also ich habe kein Visual Studio, bitte achten!

    Danke im Vorraus,

    VG
    Mandar

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Schnelle USB FIFO
    Von flo1 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 07.10.2010, 10:16
  2. günstige ccd Cam für USB ( OEM ? )
    Von looy78 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 15.11.2009, 15:30
  3. USB Cam am microcontroller?
    Von .Johannes. im Forum Sensoren / Sensorik
    Antworten: 48
    Letzter Beitrag: 29.07.2006, 12:08
  4. USB-Cam an AVR
    Von Nitronic im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 02.01.2006, 21:50
  5. Daten von USB Cam an Microcontroller
    Von .Johannes. im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 04.08.2005, 15:37

Berechtigungen

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

Labornetzteil AliExpress