ich suche eine Hilfestellung bei einem Problem, welches ich bei der Benutzung von OpenCV 3.1.0 und Python 2.7.9 habe. Ich möchte zwei Kameras (USB) zu einem Stereo-Kamerasystem machen und habe bereits einen funktionierendes Programm geschrieben, doch ist dies sehr langsam, da es nachweislich nur auf einem Kern läuft. Ich habe aber auf dem Raspberry Pi 3 Modell B 4 Kerne und möchte diese auch nutzen. Ich habe mal die ersten Zeilen (Einlesen der Kamerasignale) versucht Beispielsweise für mein Komplettes Programm zu threaden, doch tauchen immer wieder Fehler auf.
Code: Alles auswählen
import cv2
import threading
class Einlesen(threading.Thread):
def __init__(self,thread_id, name, nummer, thread_lock):
threading.Thread.__init__(self)
self.thread_id=thread_id
self.__nummer = nummer
self.__name = name
self.thead_lock = thread_lock
def run(self):
print ("Starting ")
kamera = cv2.VideoCapture(self.__nummer)
kamera.set(cv2.CAP_PROP_FRAME_WIDTH, 434)
kamera.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
if (kamera.isOpened()):
print "Signal erkannt"
while True:
kamera.grab()
ret, bild = kamera.retrieve()
cv2.imshow(self.__name, bild)
key = cv2.waitKey(50) & 0xFF
if (key == ord('q')):
print "Ende"
break
else:
print "Fehler"
cv2.destroyAllWindows()
def Main():
thread_lock = threading.Lock()
t1 = Einlesen(1, "Kamera_Links", 0, thread_lock)
t2 = Einlesen(2, "Kamera_Rechts", 1, thread_lock)
t1.start()
t2.start()
if __name__ == '__main__':
Main()
- Beide Fenster zeigen nur ein und das selbe Kamerabild an, anstatt ein Echtzeitvideo
- Kein Fenster wird geöffnet und Python schreibt in der Shell nur zwei mal "Starting" und danach startet sich die Shell einfach neu
Ich würde mich sehr über eure Hilfe freuen und danke euch im Voraus.