在树莓派上可以使用它官方标配的摄像头,但是这个摄像头似乎不能被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上使用网络摄像头相关推荐

  1. windows下python读取网络摄像头

    windows下python读取网络摄像头 这几天天天搭建环境,都快疯了,到处找包,到处安装,到处出错,读不出来网络摄像头,不过经过不懈努力终于把环境配好了,真不容易,在上一篇VSCode+pytho ...

  2. linux 命令行 webcamera,如何在Linux上运行网络摄像头(Run a Webcam on Linux)?

    在Linux上安装.配置和运行网络摄像头可以是一个相当简单的过程,也可以是一个相当复杂的过程.有许多步骤可以帮助顺利安装,每个网络摄像头和计算机设置都会有自己的怪癖和潜在的问题.用最简单的形式,要在L ...

  3. VMware安装windows 系统上提示网络上有重名的解决方法

    VMware安装windows 系统上提示网络上有重名的解决方法 标签: virtual pc 网络上有重名 虚拟机 vpc nat共享连接 杂谈 分类: 电脑知识 装了vmware 新建---添加一 ...

  4. 用微信小程序加市面上的网络摄像头实现视频会议

    项目介绍 这是本人的毕业设计项目,写的很糙,但是对网页开发有了一定的了解,现在把项目分享出来. 本系统是采用vue框架搭建视频管理端,用小程序作为用户使用端,其服务器与控制摄像头模块都是用node下的 ...

  5. Windows Moblie上的网络连接

    在window mobile平台开发网络程序, 首先要建立网络连接(这点与windows pc编程不同).mobile 的sdk提供了一套这样的api来为我们服务. 要使用这套api, 需要引入头文件 ...

  6. Windows CE下的网络监测工具(上)

    作者:马宁 最近被一个软件网络连接的问题,折腾得死去活来.问题本身不复杂,主要是网络设置不同造成的,在这里不多说了.在调试过程中,用到了Windows CE下的几个网络监测工具,才了解到Windows ...

  7. 禁用ubuntu 摄像头_如何禁用您的网络摄像头(以及为什么要这么做)

    禁用ubuntu 摄像头 Once a concern that was the province of the paranoid, years worth of reports and revela ...

  8. 使用TensorFlow.js进行人脸触摸检测第1部分:将实时网络摄像头数据与深度学习配合使用

    目录 起点 将HTML5网络摄像头API与TensorFlow.js结合使用 检测脸部触摸 技术脚注 终点线 下一步是什么?我们是否可以在未经培训的情况下检测到面部触摸? 下载TensorFlowJS ...

  9. linux下罗技摄像头采集图片,网络摄像头罗技和Linux

    我有罗技C310相机,声称特性为720p 30fps . 如果您将相机连接到窗口,录制完全符合规定的720p 30fps - 图像清晰 . 挑战是将相同的相机连接到OrangePI(服务器Armbia ...

最新文章

  1. html5手机网站照片查看器,HTMLayout仿Picasa照片查看器效果
  2. jQuery重置表单2
  3. 95-260-058-源码-检查点-CheckpointBarrierHandler
  4. Lucene.Net.Search.Highlight.FragmentQueue 中的派生方法 LessThan 不能减少访问
  5. vscode-go 插件安装
  6. pythonlauncher是干什么用的_python的launcher用法知识点总结
  7. 怎么用命令来查询自己的IP地址?
  8. [连接]研究MSN的一些参考资料(MSNP15)
  9. delphi延时 4种方法
  10. java android开发框架_android开发的三大框架是什么?
  11. 信息安全管理体系ISO27001
  12. 数学实验matlab韩明版答案,数学实验(MATLAB版)[韩明,王家宝,李林 编著] 2012年版...
  13. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(三)
  14. 嵌入式单片机基础篇(五)之stm32F1以及51单片机时钟详解
  15. Jquery引用在线CDN公共资源库
  16. 抗衰老秘方盘点:枸杞子可养肝防衰老
  17. java socketacceptor_rsocket-java小试牛刀
  18. java tolist_java – Collectors.toList()返回什么类型的List?
  19. Javascript——js常用的方法(一)...........
  20. Seagull island

热门文章

  1. JavaScript 动态加载脚本和样式的方法
  2. Android 自定义控件打造史上最简单的侧滑菜单
  3. HDU 1879(最小生成树问题,Prim)
  4. 八数码 poj 1077 广搜 A* IDA*
  5. UML总结—时序图(Sequence Diagram)和协作图(Collaboration Diagram)
  6. linux命令route
  7. Excel 做正态分布曲线
  8. mybaits十二:使用collection嵌套结果集查询
  9. Windows Vista for Developers——第三部分补充:控件和桌面窗口管理器
  10. TCP/IP——基本知识