Win10环境下OpenCV打开ELP摄像头成功但读取帧失败求助
解决方法
根因说明
Windows平台下OpenCV默认调用摄像头时未主动指定MJPEG解码模式,ELP高帧率摄像头默认输出MJPEG格式流,未配置对应参数时无法正常解码读取帧。
修复后的测试代码
import cv2 print(cv2.__version__) # ELP摄像头对应端口为0 dev_port = 0 # 指定DirectShow后端,兼容USB摄像头的自定义参数配置 camera = cv2.VideoCapture(dev_port, cv2.CAP_DSHOW) # 强制设置视频流编码格式为MJPEG camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG')) # 按需配置分辨率和帧率,当前参数对应摄像头支持的最高帧率260fps camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640) camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 360) camera.set(cv2.CAP_PROP_FPS, 260) if not camera.isOpened(): print("端口%s摄像头未成功打开" % dev_port) else: is_reading, img = camera.read() w = camera.get(cv2.CAP_PROP_FRAME_WIDTH) h = camera.get(cv2.CAP_PROP_FRAME_HEIGHT) fps = camera.get(cv2.CAP_PROP_FPS) if is_reading: print("端口%s摄像头正常工作,读取到图像:%s x %s,实际帧率:%s" % (dev_port, h, w, fps)) else: print("摄像头已识别但无法读取帧,可尝试调整分辨率、帧率参数") camera.release()
补充注意事项
- 如需使用其他分辨率帧率组合,可替换为摄像头支持的参数:1280720@120fps、19201080@60fps
- 若配置后仍无法正常读取,可升级OpenCV版本到4.5.4及以上,旧版本对高帧率USB摄像头的MJPEG适配存在已知兼容问题
内容的提问来源于stack exchange,提问作者Kneidl
相关产品推荐
相关产品推荐

