Opencv4.1 + Windows10 + Python 3.7.5 cv2.VideoCapture wird nicht korrekt angezeigt

Symptome

Umgebung

Opencv

VideoCapture.py


import cv2
 
camera = cv2.VideoCapture(0)
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
 
while True:
    ret, frame = camera.read()
    cv2.imshow('camera', frame)
 
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.imwrite("capout.jpg ", frame)
        break
 
camera.release()
cv2.destroyAllWindows()

capout.jpg

Windows Standardkamera

WIN_20191122_16_41_19_Pro.jpg
Bei der Windows-Standardkamera wird bei Auswahl von 1080p das Bild normalerweise von der Webkamera ausgegeben. Bei Verwendung der Videoaufnahme von Opencv werden jedoch beide Seiten wie im Referenzbild gezeigt schwarz ausgefüllt, und die Auflösung selbst wird ebenfalls erweitert. Ich fühle die Rauheit. Die Bildrate erhöht sich nicht, obwohl die Kamera Videos mit 60 Bildern pro Sekunde und 1080p aufnehmen kann. (Der eingestellte Wert spiegelt sich in der get-Funktion von VideoCapture wider. Wenn die Bildrate jedoch tatsächlich gemessen wird, erreicht sie einen Spitzenwert von 30 fps.)

Lösung

Ein ähnliches Phänomen wurde auf der folgenden Website gemeldet, daher habe ich die Lösung ausprobiert und gelöst. OpenCV capturing imagem with black side bars

VideoCapture2.py


import cv2
#Ändern Sie das Streaming in DSHOW
camera = cv2.VideoCapture(0, cv2.CAP_DSHOW)
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
 
while True:
    ret, frame = camera.read()
    cv2.imshow('camera', frame)
 
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.imwrite("capout.jpg ", frame)
        break
 
camera.release()
cv2.destroyAllWindows()

Ursache

Ich weiß nicht, ob die direkte Ursache schlechtes Windows oder ein Problem mit der Version von Opencv ist, aber ich konnte es mithilfe eines Streaming-Formats namens Direct SHOW lösen. Bitte beachten Sie die nachstehende Erklärung zu Direct SHOW. qiita_directshow Bisher habe ich die Videoaufnahme von Opencv normal verwendet, aber bis jetzt (in einer anderen Umgebung) gab es kein Problem mit dem Standard-Streaming, sodass die Frage weiterhin besteht. Wenn wir Optionen bestätigen können, die aufgrund dieser Änderung nicht verwendet werden können, oder erhebliche Verzögerungen, werden wir sie hinzufügen.

Recommended Posts

Opencv4.1 + Windows10 + Python 3.7.5 cv2.VideoCapture wird nicht korrekt angezeigt
Virtualenv funktioniert nicht unter Python 3.5 (Windows)
Python-Version wechselt nicht
Hinweise zur Verwendung von OpenCV mit Windows 10 Python 3.8.3.
Das Autopep8-Format [VScode] funktioniert nicht. [Python]
Python> Python enthält nicht den letzten Offset
Tensorflow tritt nicht in Windows + Anaconda ein.
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Jinja2 2.9.6 funktioniert nicht mit der Lambda Python 3-Serie
[Python] So installieren Sie OpenCV unter Anaconda [Windows]
[Python] Ausdruck (1,2) macht kein Taple mit Klammern
Die boolesche Python-Operation gibt keinen booleschen Wert zurück
Python2.7 + CentOS7 + OpenCV3
Python unter Windows
Python Windows-Umgebung
Python-Installation (Windows)
OpenCV-Beispiele (Python)
[Hinweis] openCV + Python
[Hinweis] Pythons OpenCV verfügt nicht über C ++ copyTo, Clone
[Python] Der Boolesche Operator (oder / und) gibt keinen Booleschen Wert zurück
Schlüsseleingabe, die nicht auf Schlüsseleingabe in Python wartet
[Windows] [Python] Kamerakalibrierung des Fischaugenobjektivs mit OpenCV
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Python Open CV hat versucht, das Bild im Text anzuzeigen.