问题:
我把USB3摄像头连接到windows笔记本电脑的USB2接口上,用OpenCV能正常读取,但把摄像头连接到USB3口上,就无法读取了。
解决方案:
参考了这篇博文的方案,完美解决了。具体是在cv2.VideoCapture()函数上传入第二个参数cv2.CAP_DSHOW。例如,读取ID为0的摄像头时,代码为:
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
原理解释:
cv2.VideoCapture()函数的第二个参数是一个后端标识符,用于强制指定使用哪种捕获 API。在大多数情况下,你可以忽略这个参数,OpenCV 会自动选择最佳后端。但在某些特殊情况下(如摄像头兼容性问题),需要手动指定。其常用值包括:
1)cv2.CAP_ANY:自动选择(默认)。
2)cv2.CAP_DSHOW:使用 DirectShow(Windows 平台常用)。
3)cv2.CAP_MSMF:使用 Microsoft Media Foundation(Windows)。
4)cv2.CAP_V4L2:使用 Video4Linux2(Linux 平台)。
5)cv2.CAP_FFMPEG:使用 FFmpeg 库来解码视频文件。
7697

被折叠的 条评论
为什么被折叠?



