OpenCV & Python - Echtzeit-Bild (frame) Verarbeitung
Wir sind dabei ein Projekt in der Schule, wo wir brauchen, um einfache Bildverarbeitung. Unser Ziel ist es, mit jedem video-frame für den Raspberry Pi und zu tun Echtzeit-Bildverarbeitung.
Wir haben versucht zu zählen raspistill in unserem python-Programm, aber bisher hat nichts geklappt. Das Ziel unseres Projektes ist die Entwicklung eines RC-Auto, nach einem blau/rot/was auch immer farbige Linie mit Hilfe von Bildverarbeitung.
Dachten wir, es wäre eine gute Idee, um ein python-Programm, das tut alle die Bildverarbeitung notwendig, die wir derzeit kämpfen, mit der Idee die aufgenommenen Bilder in das python-Programm. Gibt es eine Möglichkeit, dies zu tun mit picamera oder sollten wir versuchen einen anderen Weg?
Für alle neugierigen, das ist, wie unser Programm derzeit aussieht
while True:
#camera = picamera.PiCamera()
#camera.capture('image1.jpg')
img = cv2.imread('image1.jpg')
width = img.shape[1]
height = img.shape[0]
height=height-1
for x in range (0,width):
if x>=0 and x<(width//2):
blue = img.item(height,x,0)
green = img.item(height,x,1)
red = img.item(height,x,2)
if red>green and red>blue:
Vielen Dank im Voraus, anthrx.
- gleiche problem, außer färben stackoverflow.com/questions/26169633/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
OpenCV enthält bereits Funktionen, die zum verarbeiten der live-Kamera-Daten.
Das OpenCV-Dokumentation bietet ein einfaches Beispiel:
Natürlich, Sie wollen nicht, um zu zeigen, das Bild aber alle Ihre Verarbeitung gemacht werden kann.
Erinnern zu schlafen, ein paar hundert Millisekunden, so dass der pi nicht überhitzt, dass viel.
Edit:
", wie genau würde ich es aber. Ich habe "img = cv2.imread('image1.jpg')" die ganze Zeit. Was muss ich stattdessen verwenden, um die "img" - variable gleich hier? Was muss ich verwenden? Und was ist ret, für? :)"
ret
zeigt an, ob das Lesen erfolgreich war. Programm beenden, falls nicht.Lesen
frame
ist nichts anderes als Ihreimg = cv2.imread('image1.jpg')
so Ihre Erkennung code sollte funktionieren, genau das gleiche.Der einzige Unterschied ist, dass Ihr Bild nicht gespeichert werden und wieder geöffnet werden. Auch für debugging-Zwecke können Sie das aufgenommene Bild, wie:
Du können picamera zu erwerben, Bilder.
Machen "Echtzeit" können Sie die Erfassung von Daten zu jedem X-Millisekunden. Sie müssen die Menge X abhängig von der Leistungsfähigkeit Ihrer hardware (und der Komplexität des openCV-Algorithmus).
Hier ist ein Beispiel (aus http://picamera.readthedocs.io/en/release-1.10/api_camera.html#picamera.camera.PiCamera.capture_continuous) Erwerb von 60 Bildern pro Sekunde mit picamera: