摄像头拍照功能是怎样实现的?自己动手做一个!
调用摄像头
- 需求分析
- 前期准备
- 设计流程
- 实现效果
- 重要代码
- 源码及程序整合
- 后续
需求分析
现如今,拍照已经融入我们的日常生活中了。我们在日常的工作生活中很多场景都会用到拍照功能。比如在登录网页或者设备时,密码错误进行拍照,防止被盗。日常进行图像识别或者图像处理前的图像获取。都需要用到我们的摄像头进行图像的获取。
前期准备
- 带摄像头的电脑
- Visual Studio 2019
- AForge.NET Framework库文件
设计流程
- 首先我们在Visual Studio 2019创建一个工程
- 添加引用文件(不会使用AForge.NET Framework可以搜一下,网上例子很多)
- 设计自己的相关页面,其中关键在于videoSourcePlayer。这是引用文件里的
- 进行相关程序的编写,程序我放在后面。
- 运行打包(下面有我打包好的软件,可以点击看看运行结果)
实现效果
- 页面布局
- 点击连接,连接到自己电脑的摄像头
- 点击拍照,拍照成的图像,将保存在你防止的文件夹里。
保存的文件夹在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是从摄像头得到模拟信号, ...
- 自己动手做一个USB摄像头--转载
手里有一块AT32的开发板和一个OV2640摄像头模块,因为做智能车模型需要一个摄像头,就想能不能废物利用一下,用这俩做一个即插即用的USB摄像头,能够直接用在树莓派的Linux系统上,而不需要在Li ...
- webrtc 关于H5 和 画布 调用本地摄像头拍照功能的实现
1.代码的实现(html部分)<input type="button" title="开启摄像头" value="开启摄像头" onc ...
- h5前端调用android拍照功能,H5中,嵌入式webview中,调用摄像头拍照功能的实现
参考资料: 1.https://github.com/robnyman/robnyman.github.com/tree/master/camera-api[老外写的demo] 2.https://w ...
- JavaFX调用摄像头拍照
JavaFX初体验 初谈JavaFx 普通页面的实现 JavaFX调用摄像头拍照 安装Scene Builder 背景: 最近有做一个web项目用JavaFx做成客户端的需求,从第一次听说JavaFx ...
- Android 10.0 Camera2 拍照功能默认选前摄像头
1.概述 在10.0的系统产品开发中,对于app调用系统api来打开摄像头拍照的功能也是常有的功能,而拍照一般是默认打开后置摄像头拍照的,由于 客户的产品特殊要求,需要打开前置摄像头拍照功能,所以需要 ...
- vue 实现pc端调取本地摄像头拍照生成base64数据 navigator.userAgent 功能
文章目录 1. 写在前面 2. demo摄像头拍照实现效果 3. https 方式实现摄像头拍照生成base64数据的 4. 配置浏览器的目标位置 实现摄像头拍照功能 5. pc 端实现调用本地摄像头 ...
- (android硬件应用实战)摄像头拍照实现和总结
在实现摄像头拍照功能应用之前,考虑两个风险 [1] 你的应用不是每一款android 机器都可以使用 主要原因: 摄像头拍照功能执行的过程为 应用调用android系统API--> ...
- pc 和手机调用摄像头拍照 获取照片 好用
前端何如在代码中使用摄像头拍照功能 demo 部署服务器可以测试 <!DOCTYPE html> <html lang="en"><head>& ...
最新文章
- BADI EXIT等增强报W警告类消息
- vb与matlab数据交互时间延时多长,VB中实现延时(等待)的几种方法
- [No0000F4]C# 枚举(Enum)
- css flexbox模型_CSS Flexbox在全国范围内的公路旅行中得到了解释
- LeetCode 874. 模拟行走机器人(set)
- 案例解读:Oracle目录由于TFA触发bug导致jdb文件未自动清理引起空间不足
- sql数据库磁盘响应时间长_SQL Server性能–测量磁盘响应时间
- 二、CGS2000坐标系
- JQuery autocomplete使用手册
- 重写需要注意哪些方面?
- 第二章 用户画像建模
- java word 文档合并_[原创]java合并word文件
- SSD目标检测网络模型详细介绍
- 商品进销存管理系统、ERP系统源码
- 五、中枢背驰及盘整背驰
- iOSAPP创建桌面快捷方式
- drupal_Drupal在斯隆凯特琳纪念堂的早期采用
- 空洞卷积(扩张卷积,带孔卷积,atrous convolution)的一些总结与理解
- Linux:chmod命令
- xshell 5评估期已过,不能使用的解决办法
热门文章
- ESDF建图库voxblox的安装编译过程
- threading模块的使用
- 安恒杯月赛 babypass getshell不用英文字母和数字
- 2018年技术上该怎样努力
- 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法
- Google Go:初级读本
- Prefactoring——Introduction
- 数据算法排序之归并排序
- Flutter ImageFilter 高斯模糊效果 BackdropFilter 实现过滤效果
- 精通Android自定义View(八)绘制篇Canvas分析之绘制文本