C#操作摄像头实现拍照监控录像功能

作者:小菜 更新时间:2025-03-16 点击数:
简介:从正式工作以来一直做的都是基于B/S的Web开发,已经很长时间不研究C/S的东西了,但是受朋友的委托,帮他做一下拍照的这么个小功能。

其实类似的代码网上有很多,但

【菜科解读】

从正式工作以来一直做的都是基于B/S的Web开发,已经很长时间不研究C/S的东西了,但是受朋友的委托,帮他做一下拍照的这么个小功能。

其实类似的代码网上有很多,但是真的能够拿来运行的估计也没几个。

本来是说周末给做的,但是这两天脑子一直很乱,也没静下来,晚上了,再不做明天有点不好意思啊,只能临时做一个了。

在网上找资料自己做的过程中也发现了一些问题,于是拿到博客上来分享一下,这样一来有需要的朋友可以直接拿来用,二来正在研究的遇到这些问题了可以迎刃而解。

刚开始接触摄像头视频之类的是在大二的时候,那时候因为实验室有一个小项目交到我手上,所以那时候对播放视频之类的了解了一些。

那时候的需求是对已经录下来的监控录像做处理,整个过程是已经不需要自己再去控制录像了,所以相对简单一点。

而拍照和摄像是自己控制,所以稍微复杂那么一点点。

行了,废话说到这里,下面进入正题。

还是以往的作风,只实现功能,对界面不做过多的美化,有需要的朋友可以自己动手。

比较这年头自己动手,丰衣足食嘛。

图1-1是程序的主界面: 图1-1 操作摄像头以及实现拍照功能整个过程主要都是通过一个第三方的组件实现的,名字叫做 AForge ,是国外的组件,所以打开起来有点慢,但是要有耐心啊,目前已经更新到2.2.5版本了。

如果不愿意从官网上下载,文章末尾处也给出了相应的下载地址,需要的话直接拿来用就ok了。

程序也很简单,一个WinForm页面,添加一下对Aforge的引用就可以了,但是这个过程中会引用一些其他的dll,有些不是太常用,所以在这里对引用的dll也做了截图(图1-2),在自己做的过程中参照一下即可。

图1-2 上图1-1中间部分是用来实时显示摄像头开启后获取到的内容,是一个自定义控件。

这里得说明一下,将AForge.Controls.dll拖拽到左侧的工具箱区域,然后就出来自定义控件了。

这里顺便说明一下,我们平时自己开发的自定义控件也可以通过这种方式来给别人用。

前台都准备好了之后我们来开始分析后台代码。

整个的思路是先找到电脑上的摄像头设备,然后选择我们需要操作的设备,然后在拍照或者摄像。

今天由于时间关系仅仅只是实现拍照,下次再做摄像的功能,实现之后也会一样分享在这里的,希望有需要的朋友关注。

当Form加载的时候,我们监听一下其Load事件,将检测到的摄像头设备添加到后边的ComboBox中供用户选择,关键代码如下: Private void Form1_Load(object sender, EventArgs e) // 枚举所有视频输入设备 videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) throw new ApplicationException(); foreach (FilterInfo device in videoDevices) { tscbxCameras.Items.Add(device.Name); } tscbxCameras.SelectedIndex = 0; catch (ApplicationException) tscbxCameras.Items.Add("No local capture devices"); videoDevices = null; } 当用户选择某一摄像头设备再点击连接的时候,我们打开摄像头,并对其进行初始化,关键代码: //连接摄像头 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 Photograph_Click(object sender, EventArgs e) { 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; } 关闭之后,在bin目录下的PersonImg中即可找到保存的图片,当然,在程序中把该图片展示出来效果会更好,但是由于时间关系,就不添加了。

需要的朋友可以自己实现,有问题的欢迎一起交流。

至此,这样一个简单的拍照功能就完成了,在这里,附上源码下载地址。

操作,摄像头,实现,拍照,监控,录像,功能,从,

社保卡里面的钱可以取吗?什么情况下可以,如何操作?(2025

社保可以取钱吗社保卡里的钱能取出来!是真的吗??随社保网小编了解一下:社保卡可以取钱是真的吗?具体怎么做?社保资金,真的不能随意取吗?大多数情况下,社保资金确实是不能随意取出的。

社保制的设计初衷,是为了保护参保人在年老、疾病、工伤、失业等情况下能够获得一定的经济保护。

因此,社保资金的使用和提取都受到严格的限制和监管。

你可能会问,那我每个月交那么多钱,岂不是都“打水漂”了?其实不然。

虽然社保资金不能直接取出,但它会在你需要的时候发挥作用。

比如,当你退休后,可以按月领取养老金;生病住院时,医疗保险可以为你报销医疗费用;失业时,失业保险可以为你提供一定的生活保护。

特定情况下,社保资金可以取出。

虽然社保资金不能随意取出,但在特定情况下,还是可以申请提取的。

下面,我们就来看看哪些情况下可以取出社保资金。

参保人死亡如果参保人死亡,其个人账户余额可以被继承。

这意味着参保人的遗属可以申请提取参保人社保个人账户中的资金。

需要提供相关的死亡证明和继承权证明来办理提取手续。

达到退休年龄但养老保险累计缴费不足十五年当你达到法定退休年龄时,如果养老保险累计缴费不足十五年,你可以选择继续缴费至满十五年后按月领取基本养老金,或者选择一次性领取个人账户储存额。

这里需要注意的是,如果选择一次性领取,就意味着你放弃了未来按月领取养老金的权利。

疑问时刻:你会选择继续缴费还是一次性领取呢?欢迎在评论区分享你的看法。

出国定居对于选择出国定居并放弃中国国籍的个人,可以申请将社保账户中的资金提取出来。

这种情况下,个人需要提供相关的出国定居证明和放弃中国国籍的证明。

重复缴纳或错误缴纳在社保缴费过程中,如果出现重复缴纳或者错误缴纳的情况,可以向社保经办机构申请退费。

比如,灵活就业人员缴费与企业缴费重复时,可以退付灵活就业人员缴费部分。

社保卡的余额提取流程及手续1.满足医保账户余额取出条件的可申请提取。

2.准备好办理资料,如办理了异地安置的退休人员需准备好身份证复印件;医保关系已经转出统筹区的在职人员需准备身份证复印件、社保关系接收地参保证明原件;参保人死亡的需由直系亲属准备参保人死亡证明或火化证明复印件、直系亲属身份证、承诺书;出国定居的人员需准备好护照、身份证、单位合同到期说明;3.携带好以上资料和社保卡前往当地医疗事务中心办理相关手续;4.医疗事务中心会出具提现证明,申请人携带好医保卡前往指定银行办理提现手续即可。

宜昌个人如何补缴社保?个人如何操作社保补缴?(2025年4月16日)

宜昌个人社保补缴社保怎么办理?宜昌个人社保补缴怎么补?下面由新社通app小编为您介绍:社保补缴是指由于某种原因导致社保有几个月没有正常缴纳,之后又将这些月份的社保补缴上,但一般是指当人们想要买房、落户、办理退休等需求时,发现社保累计缴纳时间没有达到享受相应待遇的要求,从而需要补缴之前没有交到月份的社保,以确保可以享有相应的社保权益。

社保涵盖养老保险、医疗保险、失业保险、工伤保险、生育保险等。

我们缴纳社保,可以让我们有稳定的生活条件,例如出现失业的时候,会给我们提供一定的经济补贴,让我们减少经济烦恼。

其次,大部分地区买车买房和社保挂钩,要求只有缴纳一定期限的社保,才能在当地买车买房;如果你想要在全新的城市生活以及安家,那么购买保险是非常重要的。

当然社保带给我们的好处远不止这些,具体的作用大家可以在当地部门进行了解哦。

宜昌个人社保怎么补缴,宜昌个人如何补缴社保?个人如何操作社保补缴?随新社通小编一起看看:可以采取这三种方法补缴:1,中介代缴选择一个合适的社保代理机构代为缴纳,是最直接最省心的补救方法,但缴纳的数额会搞,我们需要支付的费用不仅有社保必须的费用,还有社保代理机构的服务费。

2、社保局自缴对于本地人来说,是可以直接到社保局去办理的,可以交城镇职工社保,也可以交城镇居民社保。

3,后续补缴养老和医疗保险的年限都是可以累计的,如果断缴了只要后面补缴够年限就可以。

所以我们也可以选择在今后的某个时间补缴,小编建议最好在退休前补交满15年。

当然,如果遇到到了退休年龄还是不够最低缴费年限的情况,可以在户籍所在地办理养老保险延期缴费,如果是外地户籍则需要缴够10年才能办理延期缴费。

补缴流程:1、单位提交资料后,由社保经办人员对补缴资料进行审核,符合条件的出具《受理回执》,不符合条件的不予受理2、补缴申请受理后,将在20个工作日内完成补缴手续,用人单位可在手续完成后,凭《受理回执》到保险关系部资料发放窗口领取退回资料(五)办理费用:自欠缴之日起,按日加收万分之五的滞纳金;逾期仍不缴纳的,由有关部门处欠缴数额一倍以上三倍以下的补缴金(四)办理时限:受理后,20个工作日内完成》》》想知道自己社保缴纳多少钱吗?快来新社通社保计算器,点击下方使用!新社通app数据所得,数据仅供参考。

(备注:数据仅供参考,具体以当地有关法规为准)

加入收藏
               

C#操作摄像头实现拍照监控录像功能

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录