gpt4 book ai didi

python - 带有正确设备名称的Python Display OpenCV Video Windows 10

转载 作者:行者123 更新时间:2023-12-02 16:08:59 24 4
gpt4 key购买 nike

如何为Windows 10上的Python提供正确的设备名称给OpenCV来显示视频?以及如何用Python枚举Windows 10上的摄像头设备?

以下Python代码可以很好地在Ubuntu上显示视频,但在Windows 10上无法运行,如下所述:

#!/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()

我想从cmd行运行该应用程序
python show_video.py /dev/video0

不起作用,因为Windows中不存在 /dev/video0

我尝试 https://stackoverflow.com/a/4286790枚举设备。它可以在C++中工作,我不知道如何将其翻译成Python。我的系统上的输出是:
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

我尝试了以下操作以显示Windows 10 cmd中的视频:
python show_video.py "\\?\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"

输出:
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

我也尝试了 python show_video.py "\\\\?\\usb#vid_0bda&pid_58c2&mi_00#6&f4034f5&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"python show_video.py "Integrated Webcam"并得到了类似的错误。

我正在使用OpenCV 3.4.1和Python 3.6.6。

最佳答案

据我所知,OpenCV不提供此类功能。要获取所连接设备的名称,您需要降低位置并使用DirectShow或WMF API来获取设备枚举列表。因此,使用纯python无法做到这一点。
我看到有一个already made cpython module实现您想要的。您可以尝试一下。
这是一个很好的post,它将帮助您完成您想做的事情,但不能使用OpenCV。

关于python - 带有正确设备名称的Python Display OpenCV Video Windows 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55737801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com