發生這種情況的各種問題,但不會出現這種錯誤情況。此代碼在Linux上有效,在Windows10 OpenCV 3.4.2、64位-Python 3.6上失敗,通過“ pip3 install opencv-python”安裝在Windows上失敗,并顯示以下錯誤消息。如果我刪除“ cv2.set()”作為水平和垂直尺寸,則可以正常工作,但分辨率不是我想要的我的目標是從默認圖像尺寸更改為更大尺寸。v=3.4.2Camera H=480, W=640Camera H=480, W=640[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -1072875855[ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -1072875855[ WARN:1] videoio(MSMF): can't grab frame. Error: -1072875855[ WARN:1] videoio(MSMF): can't grab frame. Error: -2147483638這是Python代碼import cv2print("v=%s" % cv2.__version__)cap = cv2.VideoCapture(0, cv2.)h = cap.get( cv2.CAP_PROP_FRAME_HEIGHT )w = cap.get( cv2.CAP_PROP_FRAME_WIDTH )print("Camera H=%d, W=%d" % (h,w) )# If I remove these two lines it works but is stuck at 640x480cap.set( cv2.CAP_PROP_FRAME_HEIGHT, 10000 )cap.set( cv2.CAP_PROP_FRAME_WIDTH, 10000 )h = cap.get( cv2.CAP_PROP_FRAME_HEIGHT )w = cap.get( cv2.CAP_PROP_FRAME_WIDTH )print("Camera H=%d, W=%d" % (h,w) )while(True): if cv2.waitKey(1) & 0xFF == ord('q'): break ret, frame = cap.read() if ret: cv2.imshow('frame',frame)cap.release()cv2.destroyAllWindows()
3 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
感謝brianpeiris提供的解決方案,我只是在這里以更正式的方式進行記錄
cv2.CAP_DSHOW是作為打開調用的一部分傳遞的標志,您可以傳遞許多其他標志,并且此CAP_DSHOW是Microsoft特定的。
import cv2
camera_number = 0
c = cv2.VideoCapture( camera_number + cv2.CAP_DSHOW)
# this picks the LARGEST image possible
c.set( cv2.CAP_PROP_FRAME_HEIGHT, 10000 )
c.set( cv2.CAP_PROP_FRAME_WIDTH, 10000 )
while True:
a,f = c.read()
if not a:
continue
cv2.imshow( "it-works", f )
k=cv2.waitKey(10)
# press q to quit.
if k == ord('q'):
break
添加回答
舉報
0/150
提交
取消