猿问

opencv设置相机分辨率Windows vrs linux

发生这种情况的各种问题,但不会出现这种错误情况。


此代码在Linux上有效,在Windows10 OpenCV 3.4.2、64位-Python 3.6上失败,通过“ pip3 install opencv-python”安装


在Windows上失败,并显示以下错误消息。


如果我删除“ cv2.set()”作为水平和垂直尺寸,则可以正常工作,但分辨率不是我想要的


我的目标是从默认图像尺寸更改为更大尺寸。


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

这是Python代码


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()


狐的传说
浏览 422回答 3
3回答

当年话下

通过切换到DSHOW后端API,我可以解决此问题:cap = cv2.VideoCapture(cv2.CAP_DSHOW)

万千封印

感谢brianpeiris提供的解决方案,我只是在这里以更正式的方式进行记录cv2.CAP_DSHOW是作为打开调用的一部分传递的标志,您可以传递许多其他标志,并且此CAP_DSHOW是Microsoft特定的。import cv2camera_number = 0c = cv2.VideoCapture( camera_number + cv2.CAP_DSHOW)# this picks the LARGEST image possiblec.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
随时随地看视频慕课网APP

相关分类

Python
我要回答