Lesen der Kameraeingabe von / dev / video0 in python oder c

Ich möchte aus der Datei / dev / video0 entweder über c oder python lesen und die eingehenden Bytes in einer anderen Datei speichern. Hier ist mein C-Code:

#include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int main() { int fd,wfd; fd=open("/dev/video0",O_RDONLY); wfd=open("image",O_RDWR|O_CREAT|O_APPEND,S_IRWXU); if(fd==-1) perror("open"); while(1) { char buffer[50]; int rd; rd=read(fd,buffer,50); write(wfd,buffer,rd); } return 0; } 

Wenn ich diesen Code ausführe und nach einiger Zeit das Programm beenden, geschieht nichts außer einem Dateinamen "Bild" wird generiert, was üblich ist.

Das ist mein Python-Code:

  image=open("/dev/video0","rb") image.read() 

Und das ist mein Fehler, wenn ich dieses Snippet laufe:

 Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 22] Invalid argument 

Ich möchte wissen, wie dies mit reinen c oder python code.Please keine externen Bibliotheksvorschläge zu tun.

2 Solutions collect form web for “Lesen der Kameraeingabe von / dev / video0 in python oder c”

Es ist nicht so einfach.

  1. Die meisten Kameras funktionieren nicht im Lese- / Schreibmodus. Sie müssen den Streaming I / O-Modus verwenden – zum Beispiel Speicherzuordnung.
  2. Sie müssen das Pixelformat – YUYV / RGB / MJPEG, Bytes pro Pixel, Auflösung einstellen.
  3. Sie müssen anfangen zu greifen, lesen und speichern mindestens einen Rahmen.

Weiter zu meinem Kommentar, hier ist ein Beispiel für die Anzeige eines Video-Streams von Video auf Festplatte (siehe Dokumentation ):

 import numpy as np import cv2 video = "../videos/short.avi" video_capture = cv2.VideoCapture(video) while(True): # Capture frame-by-frame ret, frame = video_capture.read() # Our operations on the frame comes here gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Display the resulting frame cv2.imshow('frame',gray) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything's done, release the capture video_capture.release() cv2.destroyAllWindows() 
  • Setzen Sie die Hardwareuhr in Python?
  • Probleme beim Ausführen des Terminalbefehls über Python
  • Wie bekomme ich die aktuelle Linux-Prozess-ID (pid) von cmdline (in schalen- und sprachunabhängiger Mode)?
  • Apt-get install für verschiedene pythonversionen
  • "ValueError: _type_ 'v' nicht unterstützt" Fehler nach der Installation von PyReadline
  • Python-Modul Fehler auf Linux
  • Python importieren & mit cdll (mit einem linux .so Datei)
  • Kann pyodbc unter Linux nicht installieren
  • Standard-Weg, um ein Ordner-Fenster in Linux zu öffnen?
  • Fake serielle Kommunikation unter Linux
  • Wie bekomme ich monotone Zeitdauern in Python?
  • Python ist die beste Programmiersprache der Welt.