2 votes

Python Afficher OpenCV Video Windows 10 avec le nom correct du périphérique

Comment puis-je fournir le nom correct du périphérique à OpenCV pour afficher une vidéo en utilisant Python sur Windows 10 ? Et comment énumérer les périphériques de caméra sous Windows 10 en Python ?

Le code Python suivant fonctionne bien pour afficher la vidéo sur Ubuntu, mais échoue sur Windows 10 comme décrit ci-dessous :

#!/usr/bin/env python
# show_video.py # Open and play a video using OpenCV 4 and Python 3.
# see https://docs.opencv.org/3.4.1/dd/d43/tutorial_py_video_display.html

import sys
import cv2 as cv

dev_name = sys.argv[1] if len(sys.argv) > 1 else '/dev/video0'
window_name = dev_name + ' OpenCV ' + cv.__version__ + ' python ' + sys.version

print('opening '  + window_name)
cap = cv.VideoCapture(dev_name)

if not cap.isOpened():
    print('error: unable to open:', dev_name)
    sys.exit(0)

k = 0
ret, frame = cap.read() # Capture frame-by-frame
while cap.isOpened() and ret and k!=27 and k!=ord('q'):
    # Display the resulting frame
    cv.imshow(window_name, frame)

    k = cv.waitKey(30) & 0xff # press <esc> or 'q' to quit
    ret, frame = cap.read()

# When everything done, release the capture
cap.release()
cv.destroyAllWindows()

J'aimerais lancer l'application à partir de la ligne cmd, mais

python show_video.py /dev/video0

ne fonctionne pas car /dev/video0 n'existe pas dans Windows.

J'ai essayé https://stackoverflow.com/a/4286790 pour énumérer les dispositifs. Il fonctionne en C++ et je ne sais pas comment il peut être traduit en Python. La sortie sur mon système était :

Integrated Webcam
Device path: \\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
Microphone (Realtek Audio)
WaveIn ID: 0

J'ai essayé ce qui suit pour afficher la vidéo à partir de Windows 10 cmd :

python show_video.py "\\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"

qui sort :

opening \\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global OpenCV 3.4.1 python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)]
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:834)
warning: \\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:835)
error: unable to open: \\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global

J'ai aussi essayé python show_video.py "\\\\?\\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global" y python show_video.py "Integrated Webcam" et j'ai obtenu des erreurs similaires.

J'utilise OpenCV 3.4.1 et Python 3.6.6.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X