问题:台式机没有摄像头,外接USB摄像头,通过 cv2.VideoCapture(0)捕获视频图像报错
[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -2147024809
[ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -2147024809
[ WARN:1] videoio(MSMF): can't grab frame. Error: -2147024809
[ WARN:1] terminating async callback
如果是在笔记本上,默认摄像头是自带的那个摄像头,索引号为0,可是如果外接USB摄像头,它的索引号就不一定是0 ,或者像大多数博客中写道的1,2,3……
解决方案:修改源代码,循环暴力破解摄像头设备ID
import cv2
ID = 0
while(1):
cap = cv2.VideoCapture(ID)
# get a frame
ret, frame = cap.read()
if ret == False:
ID += 1
else:
print(ID)
break
[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -2147024809
[ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -2147024809
[ WARN:1] videoio(MSMF): can't grab frame. E