cv2.VideoCapture(0, cv2.DSHOW) returns none
cv2.VideoCapture(0, cv2.DSHOW) returns none
我正在尝试使用 opencv 从笔记本电脑(或外部 USB 摄像头)上的内置网络摄像头捕获视频,特别是带有 DSHOW 参数的 VideoCapture。
我知道有一种方法可以设置分辨率甚至 FPS,但是 API returns none 的 DirectShow 参数当我将它包含在代码。
例如;
# returns my webcam's stream, but all optional arguments are ignored
camera = cv2.VideoCapture(0)
camera = cv2.VideoCapture(0, cv2.CAP_V4L2)
# returns none and loops infinitely or errors out when *if im.any()*
camera = cv2.VideoCapture(0, cv2.CAP_DSHOW)
这是上面后面的代码;
# should set resolution, settings are always ignored
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
while(True):
retval, im = camera.read()
if im.any(): # errors out when image is none
cv2.imshow("image", im)
k = cv2.waitKey(33)
if k==27: # Esc key press
print('Resolution: {0}x and {1}y'.format(im.shape[1],im.shape[0]))
print('FPS: {0}'.format(camera.get(cv2.CAP_PROP_FPS)))
break
camera.release()
cv2.destroyAllWindows()
DSHOW 是否正确 API 使用,它是否是唯一 API 可以使用 opencv 更改相机流的分辨率和 FPS 的方法?还是我做错了什么?
有关系统的更多详细信息。
- Ubuntu 18.04.6
- python 3.9.5
- opencv-python 4.5.2.52
提前感谢您的帮助!
此致,蒂兹
DSHOW(和 MSMF)仅 windows。
在 linux 上,使用 V4L、FFMPEG 或 GSTREAMER
另外,请检查 capture.set() 的return 值,
并非所有 properties/values 都将在任何给定机器上得到支持
我正在尝试使用 opencv 从笔记本电脑(或外部 USB 摄像头)上的内置网络摄像头捕获视频,特别是带有 DSHOW 参数的 VideoCapture。 我知道有一种方法可以设置分辨率甚至 FPS,但是 API returns none 的 DirectShow 参数当我将它包含在代码。
例如;
# returns my webcam's stream, but all optional arguments are ignored
camera = cv2.VideoCapture(0)
camera = cv2.VideoCapture(0, cv2.CAP_V4L2)
# returns none and loops infinitely or errors out when *if im.any()*
camera = cv2.VideoCapture(0, cv2.CAP_DSHOW)
这是上面后面的代码;
# should set resolution, settings are always ignored
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
while(True):
retval, im = camera.read()
if im.any(): # errors out when image is none
cv2.imshow("image", im)
k = cv2.waitKey(33)
if k==27: # Esc key press
print('Resolution: {0}x and {1}y'.format(im.shape[1],im.shape[0]))
print('FPS: {0}'.format(camera.get(cv2.CAP_PROP_FPS)))
break
camera.release()
cv2.destroyAllWindows()
DSHOW 是否正确 API 使用,它是否是唯一 API 可以使用 opencv 更改相机流的分辨率和 FPS 的方法?还是我做错了什么?
有关系统的更多详细信息。
- Ubuntu 18.04.6
- python 3.9.5
- opencv-python 4.5.2.52
提前感谢您的帮助!
此致,蒂兹
DSHOW(和 MSMF)仅 windows。
在 linux 上,使用 V4L、FFMPEG 或 GSTREAMER
另外,请检查 capture.set() 的return 值, 并非所有 properties/values 都将在任何给定机器上得到支持