在ASP .Net Core程序中我们怎样才可以直接通过摄像头捕获照片呢?这里是说的直接获取,并非指的Web程序,Web页面程序可以通过JS调用浏览器提供的设备接口来直接获取视频资源,可以翻看我之前的文章:
https://lebang2020.cn/details/210919lergu0cd.html
https://lebang2020.cn/details/2109194s5shblh.html
在这里我们说的是直接获取并非指的这一类方法。主要思路还是通过第三方库来完成。支持USB类的摄像头,也支持笔记本自带类的摄像头。我把实现的方法写到一个Test项目中。默认使用的.Net5 ,当然也可以改成.Net Core 3.1。同理也可以获取完整的视频流,目前功能是运行一次后自动保存一张摄像头的照片到D盘下面,提供百度云盘的下载地址:使用的库名是 openvcsharp
链接:https://pan.baidu.com/s/1_4ZLcGkkqVs0poWDmMzvEQ
方案边界与常见坑
OpenCvSharp 方案的本质是"服务端进程直接操作本机摄像头",它适合桌面程序或本地服务,不适合部署在远端服务器上的网站——服务器上没有摄像头,也无法访问用户设备。
- 公网网站要"用浏览器拍照",必须走浏览器 getUserMedia API,权限由用户授权;
- VideoCapture(0) 编号从 0 开始,多摄像头时逐个试探;
- 无人值守环境(Windows 服务、计划任务)要处理视频流初始化失败与资源释放(Release + Dispose);
- 抓图建议先 Read 一帧判断是否为空,黑图多在首个 I 帧未就绪;
- 文件保存目录需有写权限,跨平台部署用 Path.Combine 拼路径。
💰 此内容为付费阅读 请先登录