调用摄像头

  • 需求分析
  • 前期准备
  • 设计流程
  • 实现效果
  • 重要代码
  • 源码及程序整合
  • 后续

需求分析

现如今,拍照已经融入我们的日常生活中了。我们在日常的工作生活中很多场景都会用到拍照功能。比如在登录网页或者设备时,密码错误进行拍照,防止被盗。日常进行图像识别或者图像处理前的图像获取。都需要用到我们的摄像头进行图像的获取。

前期准备

  1. 带摄像头的电脑
  2. Visual Studio 2019
  3. AForge.NET Framework库文件

设计流程

  1. 首先我们在Visual Studio 2019创建一个工程
  2. 添加引用文件(不会使用AForge.NET Framework可以搜一下,网上例子很多)
  3. 设计自己的相关页面,其中关键在于videoSourcePlayer。这是引用文件里的
  4. 进行相关程序的编写,程序我放在后面。
  5. 运行打包(下面有我打包好的软件,可以点击看看运行结果)

实现效果

  1. 页面布局
  2. 点击连接,连接到自己电脑的摄像头
  3. 点击拍照,拍照成的图像,将保存在你防止的文件夹里。
    保存的文件夹在 GetImagePath()函数里
    可以这样写
                private string GetImagePath(){string personImgPath = "D:\\图片";if (!Directory.Exists(personImgPath)){Directory.CreateDirectory(personImgPath);}return personImgPath;}

命名(string picName = GetImagePath() + "\\" + "xiaosy" + ".jpg";

重要代码

private void btnConnect_Click(object sender, EventArgs e){CameraConn();}//连接摄像头private void CameraConn(){VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);videoSource.DesiredFrameSize = new System.Drawing.Size(320, 240);videoSource.DesiredFrameRate = 1;videoSourcePlayer.VideoSource = videoSource;videoSourcePlayer.Start();}//关闭摄像头private void btnClose_Click(object sender, EventArgs e){videoSourcePlayer.SignalToStop();videoSourcePlayer.WaitForStop();}//主窗体关闭private void Form1_FormClosing(object sender, FormClosingEventArgs e){btnClose_Click(null, null);}//拍照private void Photograph_Click(object sender, EventArgs e){try{if (videoSourcePlayer.IsRunning){BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(videoSourcePlayer.GetCurrentVideoFrame().GetHbitmap(),IntPtr.Zero,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());PngBitmapEncoder pE = new PngBitmapEncoder();pE.Frames.Add(BitmapFrame.Create(bitmapSource));string picName = GetImagePath() + "\\" + "xiaosy" + ".jpg";if (File.Exists(picName)){File.Delete(picName);}using (Stream stream = File.Create(picName)){pE.Save(stream);}//拍照完成后关摄像头并刷新同时关窗体if (videoSourcePlayer != null && videoSourcePlayer.IsRunning){videoSourcePlayer.SignalToStop();videoSourcePlayer.WaitForStop();}this.Close();}}catch (Exception ex){MessageBox.Show("摄像头异常:" + ex.Message);}}private string GetImagePath(){string personImgPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory)+ Path.DirectorySeparatorChar.ToString() + "PersonImg";if (!Directory.Exists(personImgPath)){Directory.CreateDirectory(personImgPath);}return personImgPath;}

源码及程序整合

  1. 工程源码
  2. 可直接点击进行运行的程序

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的程序设计专栏。
订阅专栏后,可以在微信公众号上私聊我,直接发给你源码。
或者关注公众号。

编写不易,感谢支持。

摄像头拍照功能是怎样实现的?自己动手做一个!相关推荐

  1. 初识二维码 第二十讲 二维码解码程序的组件之一 摄像头拍照功能

    初识二维码 第二十讲    二维码解码程序的组件之一 摄像头拍照功能 解码程序的第一个环节是通过摄像头这个硬件,得到二维码的图片. 对摄像头的工作原理来说,简单的描述如下:1是从摄像头得到模拟信号, ...

  2. 自己动手做一个USB摄像头--转载

    手里有一块AT32的开发板和一个OV2640摄像头模块,因为做智能车模型需要一个摄像头,就想能不能废物利用一下,用这俩做一个即插即用的USB摄像头,能够直接用在树莓派的Linux系统上,而不需要在Li ...

  3. webrtc 关于H5 和 画布 调用本地摄像头拍照功能的实现

    1.代码的实现(html部分)<input type="button" title="开启摄像头" value="开启摄像头" onc ...

  4. h5前端调用android拍照功能,H5中,嵌入式webview中,调用摄像头拍照功能的实现

    参考资料: 1.https://github.com/robnyman/robnyman.github.com/tree/master/camera-api[老外写的demo] 2.https://w ...

  5. JavaFX调用摄像头拍照

    JavaFX初体验 初谈JavaFx 普通页面的实现 JavaFX调用摄像头拍照 安装Scene Builder 背景: 最近有做一个web项目用JavaFx做成客户端的需求,从第一次听说JavaFx ...

  6. Android 10.0 Camera2 拍照功能默认选前摄像头

    1.概述 在10.0的系统产品开发中,对于app调用系统api来打开摄像头拍照的功能也是常有的功能,而拍照一般是默认打开后置摄像头拍照的,由于 客户的产品特殊要求,需要打开前置摄像头拍照功能,所以需要 ...

  7. vue 实现pc端调取本地摄像头拍照生成base64数据 navigator.userAgent 功能

    文章目录 1. 写在前面 2. demo摄像头拍照实现效果 3. https 方式实现摄像头拍照生成base64数据的 4. 配置浏览器的目标位置 实现摄像头拍照功能 5. pc 端实现调用本地摄像头 ...

  8. (android硬件应用实战)摄像头拍照实现和总结

    在实现摄像头拍照功能应用之前,考虑两个风险 [1]       你的应用不是每一款android 机器都可以使用 主要原因: 摄像头拍照功能执行的过程为  应用调用android系统API--> ...

  9. pc 和手机调用摄像头拍照 获取照片 好用

    前端何如在代码中使用摄像头拍照功能 demo 部署服务器可以测试 <!DOCTYPE html> <html lang="en"><head>& ...

最新文章

  1. BADI EXIT等增强报W警告类消息
  2. vb与matlab数据交互时间延时多长,VB中实现延时(等待)的几种方法
  3. [No0000F4]C# 枚举(Enum)
  4. css flexbox模型_CSS Flexbox在全国范围内的公路旅行中得到了解释
  5. LeetCode 874. 模拟行走机器人(set)
  6. 案例解读:Oracle目录由于TFA触发bug导致jdb文件未自动清理引起空间不足
  7. sql数据库磁盘响应时间长_SQL Server性能–测量磁盘响应时间
  8. 二、CGS2000坐标系
  9. JQuery autocomplete使用手册
  10. 重写需要注意哪些方面?
  11. 第二章 用户画像建模
  12. java word 文档合并_[原创]java合并word文件
  13. SSD目标检测网络模型详细介绍
  14. 商品进销存管理系统、ERP系统源码
  15. 五、中枢背驰及盘整背驰
  16. iOSAPP创建桌面快捷方式
  17. drupal_Drupal在斯隆凯特琳纪念堂的早期采用
  18. 空洞卷积(扩张卷积,带孔卷积,atrous convolution)的一些总结与理解
  19. Linux:chmod命令
  20. xshell 5评估期已过,不能使用的解决办法

热门文章

  1. ESDF建图库voxblox的安装编译过程
  2. threading模块的使用
  3. 安恒杯月赛 babypass getshell不用英文字母和数字
  4. 2018年技术上该怎样努力
  5. 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法
  6. Google Go:初级读本
  7. Prefactoring——Introduction
  8. 数据算法排序之归并排序
  9. Flutter ImageFilter 高斯模糊效果 BackdropFilter 实现过滤效果
  10. 精通Android自定义View(八)绘制篇Canvas分析之绘制文本