2017-08-01 2 views
4

Ich habe einen Python-Code geschrieben, der einige opencv-Code enthält, um mit meiner Webcam herumzuspielen. Ich habe es an raspi 3 angeschlossen. Ich will das beim Start (Booten), es beginnt Video automatisch aufzunehmen. Ich benutze Crontab für diese.Automatisierung der Videoaufnahme beim Booten von Himbeer pi3

Mein Python-Code:

import cv 

if __name__ == "__main__": 
# find the webcam 
capture = cv2.VideoCapture(0) 
capture1 = capture 
# video recorder 
fourcc = cv2.cv.CV_FOURCC(*'XVID') #cv2.VideoWriter_fourcc() does not exist 
videoOut = cv2.VideoWriter('out1.avi', fourcc, 10.0, (640, 480)) 
videoOut1 = cv2.VideoWriter('out2.avi', fourcc, 10.0, (640, 480)) 
# record video 
while (capture.isOpened() and capture1.isOpened()): 
    ret, frame = capture.read() 
    ret1, frame1 = capture1.read() 
    if ret: 
     videoOut.write(frame) 
     cv2.imshow('Video Stream', frame) 



    else: 
     break 
    if ret1: 
     frame1 = cv2.flip(frame1,1) 
     videoOut1.write(frame1) 
     cv2.imshow('Video Stream1', frame1) 

    else: 
     break 

    # Tiny Pause 
    key = cv2.waitKey(1) 

capture1.release() 
videoOut1.release() 
capture.release() 
videoOut.release() 
cv2.destroyAllWindows() 

Dann machte ich ein Bash-Skript, das wie folgt aussieht,

cd/
cd absolute path to my python file directory 
sudo python cam22.py 
cd/

cam22.py ist der Name meiner Python Datei

Dann habe ich contrab diesen Bash-Skript zur Laufzeit durch das Schreiben

@reboot path to my bash file 

Nach dem Neustart zwei AVI-Dateien erzeugt werden im gleichen Verzeichnis aber das Video wird nicht aufgenommen, die Webcam nicht läuft laufen, was jedoch perfekt läuft, wenn ich diese bash-Datei selbst ausführe, um die Python-Datei auszuführen.

Wie in den Kommentaren Schlug ich eine Log-Datei erstellt haben, zeigt es das Fehlerprotokoll zeigt (Video Stream: 542): Gtk-Warnung **: nicht offen Anzeige:

+1

Schwer zu sagen, aber wenn Sie Fehler protokollieren möchten, schreiben Sie einfach '@ Reboot Pfad zu meiner Bash-Datei >> Logfile ', um zu wissen, was tatsächlich passiert. – Bhavyanshu

+0

Versuchen Sie, Interaktionen mit Bildschirm und Tastatur zu entfernen, die für 'cron' Prozesse nicht verfügbar sind -' imshow() ',' waitkey() '... –

+0

@Bhavyanshu Das Fehlerprotokoll zeigt (Video Stream: 542): Gtk-Warnung **: Anzeige kann nicht geöffnet werden: – Shirish

Antwort

1

vorgeschlagen, .avi und versucht Wie von Mark Setchell in den Kommentaren es bedeutet auch, dass Video durch falsches Format Rechtschreibung .avi es nicht erzeugt ändern, es funktionierte einwandfrei, nachdem imshow(), WAITKEY Entfernen ().

0

Wenn zwei Dateien erzeugt werden, dass bedeutet Crontab funktioniert gut. einmal

fourcc = cv2.cv.CV_FOURCC('D', 'I', 'V', 'X') 
videoOut = cv2.VideoWriter('output1.AVI', fourcc, 20, (640, 480), 1) 
videoOut2 = cv2.VideoWriter('output2.AVI', fourcc, 20, (640, 480), 1) 
+0

Hallo mein Herr, ich denke, dass das Dateiformat nicht das Problem sein sollte, denn wenn ich diesen Code manuell starte, beginnt die Videoaufnahme und es wird richtig gespeichert. Bash-Datei funktioniert auch einwandfrei, ich habe es getestet. Ich habe die Frage bearbeitet und das Fehlerprotokoll hinzugefügt. @Abhishek Soni – Shirish

+0

dann denke ich, das ist etwas mit der Hardware nur versuchen, etwas Schlaf am Anfang des Programms hinzufügen und lassen Sie mich wissen, ob Fortschritte –

+0

Ich habe das seit gestern, sogar für 2 Minuten probiert! @Abhishek Soni – Shirish