在Windows IoT上使用网络摄像头
在树莓派上可以使用它官方标配的摄像头,但是这个摄像头似乎不能被Windows IoT识别和使用。但是,可以在树莓派的USB口上插入任意型号的摄像头,就可以实现树莓派的拍摄功能。
关于摄像头的寻找和拍摄,我将其封装成一个类,如下:
public class WebCamHelper{public MediaCapture mediaCapture;private bool initialized = false;/// <summary>/// 异步初始化网络摄像头/// </summary>public async Task InitializeCameraAsync(){if (mediaCapture == null){// 尝试发现摄像头var cameraDevice = await FindCameraDevice();if (cameraDevice == null){// 没有发现摄像头Debug.WriteLine("No camera found!");initialized = false;return;}// Creates MediaCapture initialization settings with foudnd webcam devicevar settings = new MediaCaptureInitializationSettings { VideoDeviceId = cameraDevice.Id };mediaCapture = new MediaCapture();await mediaCapture.InitializeAsync(settings);initialized = true;}}/// <summary>/// 异步寻找摄像头,如果没有找到,返回null,否则返回DeviceInfomation/// </summary>private static async Task<DeviceInformation> FindCameraDevice(){// Get available devices for capturing picturesvar allVideoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);if (allVideoDevices.Count > 0){// 如果发现,返回return allVideoDevices[0];}else{return null;}}/// <summary>/// 开启摄像头预览/// </summary>public async Task StartCameraPreview(){try{await mediaCapture.StartPreviewAsync();}catch{initialized = false;Debug.WriteLine("Failed to start camera preview stream");}}/// <summary>/// 关闭摄像头预览/// </summary>public async Task StopCameraPreview(){try{await mediaCapture.StopPreviewAsync();}catch{Debug.WriteLine("Failed to stop camera preview stream");}}/// <summary>/// 拍摄照片,返回StorageFile,文件将被存储到临时文件夹/// </summary>public async Task<StorageFile> CapturePhoto(){// Create storage file in local app storagestring fileName = GenerateNewFileName() + ".jpg";CreationCollisionOption collisionOption = CreationCollisionOption.GenerateUniqueName;StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName, collisionOption);// 拍摄并且存储await mediaCapture.CapturePhotoToStorageFileAsync(ImageEncodingProperties.CreateJpeg(), file);//await Task.Delay(500);return file;}/// <summary>/// 产生文件名称/// </summary>private string GenerateNewFileName(){return " IoTSample" + DateTime.Now.ToString("yyyy.MMM.dd HH-mm-ss");}public string GenerateUserNameFileName(string userName){return userName + DateTime.Now.ToString("yyyy.MM.dd HH-mm-ss") + ".jpg";}/// <summary>/// 如果摄像头初始化成功,返回true,否则返回false/// </summary>public bool IsInitialized(){return initialized;}
使用示例:
1.初始化
private WebCamHelper camera;if(camera==null){camera = new WebCamHelper();await camera.InitializeCameraAsync();}if(camera.IsInitialized()){tbMessage.Text = "Camera启动成功...";}else{tbMessage.Text = "Camera启动失败...";}
2.拍摄
if (!camera.IsInitialized()) return;StorageFile imgFile = await camera.CapturePhoto();
拍摄完成的图片文件就存储在上面的imgFile中。
3.视频预览
如果想开启视频预览,实时查看摄像头捕获的图像,可以在XAML中先添加一个CaptureElement控件:
<CaptureElement x:Name="cameraElement"Loaded="cameraElement_Loaded"/>
在CaptureElement的Loaded事件中执行source绑定:
cameraElement.Source = camera.mediaCapture;
然后在想要开始视频预览的地方,执行:
await camera.StartCameraPreview();
关闭视频预览:
await camera.StopCameraPreview();
转载于:https://www.cnblogs.com/mengnan/p/6790583.html
在Windows IoT上使用网络摄像头相关推荐
- windows下python读取网络摄像头
windows下python读取网络摄像头 这几天天天搭建环境,都快疯了,到处找包,到处安装,到处出错,读不出来网络摄像头,不过经过不懈努力终于把环境配好了,真不容易,在上一篇VSCode+pytho ...
- linux 命令行 webcamera,如何在Linux上运行网络摄像头(Run a Webcam on Linux)?
在Linux上安装.配置和运行网络摄像头可以是一个相当简单的过程,也可以是一个相当复杂的过程.有许多步骤可以帮助顺利安装,每个网络摄像头和计算机设置都会有自己的怪癖和潜在的问题.用最简单的形式,要在L ...
- VMware安装windows 系统上提示网络上有重名的解决方法
VMware安装windows 系统上提示网络上有重名的解决方法 标签: virtual pc 网络上有重名 虚拟机 vpc nat共享连接 杂谈 分类: 电脑知识 装了vmware 新建---添加一 ...
- 用微信小程序加市面上的网络摄像头实现视频会议
项目介绍 这是本人的毕业设计项目,写的很糙,但是对网页开发有了一定的了解,现在把项目分享出来. 本系统是采用vue框架搭建视频管理端,用小程序作为用户使用端,其服务器与控制摄像头模块都是用node下的 ...
- Windows Moblie上的网络连接
在window mobile平台开发网络程序, 首先要建立网络连接(这点与windows pc编程不同).mobile 的sdk提供了一套这样的api来为我们服务. 要使用这套api, 需要引入头文件 ...
- Windows CE下的网络监测工具(上)
作者:马宁 最近被一个软件网络连接的问题,折腾得死去活来.问题本身不复杂,主要是网络设置不同造成的,在这里不多说了.在调试过程中,用到了Windows CE下的几个网络监测工具,才了解到Windows ...
- 禁用ubuntu 摄像头_如何禁用您的网络摄像头(以及为什么要这么做)
禁用ubuntu 摄像头 Once a concern that was the province of the paranoid, years worth of reports and revela ...
- 使用TensorFlow.js进行人脸触摸检测第1部分:将实时网络摄像头数据与深度学习配合使用
目录 起点 将HTML5网络摄像头API与TensorFlow.js结合使用 检测脸部触摸 技术脚注 终点线 下一步是什么?我们是否可以在未经培训的情况下检测到面部触摸? 下载TensorFlowJS ...
- linux下罗技摄像头采集图片,网络摄像头罗技和Linux
我有罗技C310相机,声称特性为720p 30fps . 如果您将相机连接到窗口,录制完全符合规定的720p 30fps - 图像清晰 . 挑战是将相同的相机连接到OrangePI(服务器Armbia ...
最新文章
- html5手机网站照片查看器,HTMLayout仿Picasa照片查看器效果
- jQuery重置表单2
- 95-260-058-源码-检查点-CheckpointBarrierHandler
- Lucene.Net.Search.Highlight.FragmentQueue 中的派生方法 LessThan 不能减少访问
- vscode-go 插件安装
- pythonlauncher是干什么用的_python的launcher用法知识点总结
- 怎么用命令来查询自己的IP地址?
- [连接]研究MSN的一些参考资料(MSNP15)
- delphi延时 4种方法
- java android开发框架_android开发的三大框架是什么?
- 信息安全管理体系ISO27001
- 数学实验matlab韩明版答案,数学实验(MATLAB版)[韩明,王家宝,李林 编著] 2012年版...
- 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(三)
- 嵌入式单片机基础篇(五)之stm32F1以及51单片机时钟详解
- Jquery引用在线CDN公共资源库
- 抗衰老秘方盘点:枸杞子可养肝防衰老
- java socketacceptor_rsocket-java小试牛刀
- java tolist_java – Collectors.toList()返回什么类型的List?
- Javascript——js常用的方法(一)...........
- Seagull island