最近做一个Net Core写的程序,其中一项功能就是获取摄像头的抓拍图片文件。在编写过程中使用到了OpenCvSharp。主要代码如下:
var cap = VideoCapture.FromCamera(0,VideoCaptureAPIs.ANY);
cap.Set(VideoCaptureProperties.FrameWidth, 512);
cap.Set(VideoCaptureProperties.FrameHeight, 300);
Mat mat = new Mat();
File.WriteAllBytes(@"D:\" + DateTime.Now.Ticks + ".png", mat.ToBytes());
以上代码就把抓到的图片保存到了D盘下面,但是在部署到生产环境时遇到错误如下:
CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoFormat_RGB24

错误原因及解决解决办法如下:
报错说明
OpenCvSharp 通过 MSMF 后端打开摄像头并设置分辨率时报 CvCapture_MSMF 设置 mediaType 失败,通常是摄像头不支持该分辨率与帧率的组合,或后端与设备驱动不兼容。
处理办法
- 先用摄像头支持的分辨率(如 640×480)测试,确认能打开后再逐档调整。
- 改用不同的后端,如 VideoCaptureAPIs.DSHOW(Windows)。
- 确认没有其它程序正在占用摄像头。
- 检查 OpenCvSharp 与 OpenCV 运行库版本是否匹配。
💰 此内容为付费阅读 请先登录