Questions that are variations of this occur, but not this error situation.
This codeworks on Linux, it Fails on windows10 OpenCV 3.4.2, 64bit -Python 3.6 - installed via "pip3 install opencv-python"
It fails on Windows with the error message below.
If I remove the 'cv2.set()' for the horz and virt size it works, without problem but the resolution is not what I want
My goal is to change from the default image size to the LARGER size.
v=3.4.2
Camera H=480, W=640
Camera 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
This is the Python code
import cv2
print("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 640x480
cap.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()
I was able to work around this by switching to the DSHOW backend API:
cap = cv2.VideoCapture(cv2.CAP_DSHOW)
Thanks to brianpeiris for the solution, I'm just documenting it here in a more formal way
The cv2.CAP_DSHOW is a flag passed as part of the open call, there are many others you can pass, and this CAP_DSHOW is Microsoft specific.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With