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年沈阳社保待遇领取资格认证如何操作

沈阳社保待遇资格认证可以通过多种方式进行,包括现场办理、互联网自助认证以及手机APP自助认证。

接下来随新社通app小编一起了解具体详情吧。

沈阳?社保待遇领取资格认证可以通过多种线上和线下的方式进行操作。

?线上认证方法?电子社保卡认证?:用户可以通过电子社保卡小程序或APP进行认证。

具体步骤包括:打开电子社保卡,点击“全国服务”—“社保待遇资格认证”,然后按提示进行操作。

认证方式包括眨眼认证和读数认证。

?社会保险公共服务平台?:用户可以登录社会保险公共服务平台网站,按照提示进行资格认证。

??客户端小程序?:通过进入客户端小程序,领取电子社保卡后进行认证。

??中国领事APP?:定居境外的退休人员可以通过中国领事APP或小程序进行在线认证。

?线下认证方法?现场认证?:用户可以携带有效身份证件到就近的社保经办机构、街道办事处进行认证。

自助终端?:在部分地区,用户可以通过银行的自助终端机进行认证,如徽商银行、建设银行等。

?上门服务?:对于高龄、病残等行动不便的人员,社保经办机构或社区可以提供上门服务,通过微信视频等方式进行认证。

注意事项?认证周期?:一般每年认证一次,具体时间从上一次认证通过的次月开始计算,12个月内完成即可。

??认证失败处理?:如果认证不通过,用户应及时联系当地社保经办机构或社区进行核实和处理。

?特殊人群服务?:对于不会使用智能手机的老年朋友,子女可以通过“亲情服务”功能帮助认证,或者申请上门服务。

?

山东济南领取社保福利补贴,有哪些实用的操作方法

社保是社会保险的简称,广义的社会保险包括城镇职工社会保险和城乡居民社会保险,但狭义的社保指的就是职工社保。

领取社保福利补贴的具体步骤和条件是什么?社保补贴怎么拿?领取社保福利补有哪些呢?一文带你了解。

山东济南领取社保福利补贴,有哪些实用的操作方法?社保福利补贴要如何领取,流程是怎样的?社保福利补贴的领取,主要通过以下几种方式来实现。

领取社保福利补贴时,其具体操作步骤与所需材料情况如下:灵活就业社保补贴:申请条件:适用于就业困难人员(如女性满40周岁、男性满50周岁等特殊群体)、离校2年内未就业的高校毕业生、以及个体工商户等。

所需材料:身份证、户口簿、就业失业登记证、灵活就业承诺书、社保缴费凭证等。

申请流程:线上可通过当地人社局官网或相关APP申请,填写信息并上传相关材料;线下需前往户籍所在地或常住地街道(乡镇)社保服务中心提交纸质材料。

毕业生就业补贴:适用对象:毕业两年内的高校毕业生,需在中小微企业就业并签订一年以上劳动合同。

补贴标准:各地金额不同,如深圳为一次性3000元,广州为3000元。

申请流程:符合条件的参保人可在满足社保缴纳要求后一次性申领。

失业保险相关补贴:失业保险金:适用于非自愿失业且累计缴纳失业保险满1年者,补贴标准每月约2000元,最长领取24个月。

失业补助金:适用于主动辞职或不符合失业保险金条件者,补贴标准每月300-1000元,最长领取6个月。

生育津贴:适用对象:单位缴纳生育保险满1年的女性职工或配偶参保的失业女性。

补贴标准:根据地区平均工资计算,通常为几万元,可一次性或按月领取。

公积金和养老金:公积金:可用于申请公积金贷款或直接提取,申领条件为正常缴存公积金且无房。

养老金:社保累计缴纳满15年且达到法定退休年龄即可领取,领取金额与缴纳金额和年限有关。

?申请这些补贴时需要注意的事项包括?:不同地区的补贴金额和领取期限有所不同,具体需向当地社会保险经办部门咨询或拨打12333热线确认。

如不慎遭遇网络诈骗,保存好相关证据材料并立即报警。

线上预审时,务必在官网进行操作,避免在私人链接提交信息,以防信息泄露。

加入收藏
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录