软件c#语言调用摄像头,C#中如何使用AForge实现摄像头录像功能
C#中如何使用AForge实现摄像头录像功能
发布时间:2020-10-24 15:02:30
来源:亿速云
阅读:105
作者:小新
这篇文章主要介绍C#中如何使用AForge实现摄像头录像功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1:首先下载库文件>>
也可以去官网寻找>>
下载本教程全代码>>
输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:
2:添加这些引用:
3:两个全局变量://用来操作摄像头
private VideoCaptureDevice Camera = null;
//用来把每一帧图像编码到视频文件
private VideoFileWriter VideoOutPut = new VideoFileWriter();
开始代码:
//获取摄像头列表
var devs = new FilterInfoCollection(FilterCategory.VideoInputDevice);
//实例化设备控制类(我选了第1个)
Camera = new VideoCaptureDevice(devs[0].MonikerString);
//配置录像参数(宽,高,帧率,比特率等参数)VideoCapabilities这个属性会返回摄像头支持哪些配置,从这里面选一个赋值接即可,我选了第1个
Camera.VideoResolution = Camera.VideoCapabilities[0];
//设置回调,aforge会不断从这个回调推出图像数据
Camera.NewFrame += Camera_NewFrame;
//打开摄像头
Camera.Start();
//打开录像文件(如果没有则创建,如果有也会清空),这里还有关于
VideoOutPut.Open("E:/VIDEO.MP4",
Camera.VideoResolution.FrameSize.Width,
Camera.VideoResolution.FrameSize.Height,
Camera.VideoResolution.AverageFrameRate,
VideoCodec.MPEG4,
Camera.VideoResolution.BitCount);
给AForge输出图像数据的回调方法:
//图像缓存
private Bitmap bmp = new Bitmap(1, 1);
//摄像头输出回调
private void Camera_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
//写到文件
VideoOutPut.WriteVideoFrame(eventArgs.Frame);
lock (bmp)
{
//释放上一个缓存
bmp.Dispose();
//保存一份缓存
bmp = eventArgs.Frame.Clone() as Bitmap;
}
}
结束代码://停摄像头
Camera.Stop();
//关闭录像文件,如果忘了不关闭,将会得到一个损坏的文件,无法播放
VideoOutPut.Close();
4:修改App.config,兼容net2.0的一些东西:
<?xml version="1.0" encoding="utf-8"?>
不然会这样:
以上是C#中如何使用AForge实现摄像头录像功能的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
软件c#语言调用摄像头,C#中如何使用AForge实现摄像头录像功能相关推荐
- 软件c#语言调用摄像头,c#基于opencv,开发摄像头播放程序
前言 Windows下实现摄像视频捕捉有多种实现方式:各种方式的优劣,本文不做对比.但是,opencv是一款老牌开发库,在图像处理领域声名显赫.采用opencv来处理摄像视频,在性能和稳定性上,是有保 ...
- 软件c#语言调用摄像头,C#调用摄像头的几种方式
C#调用摄像头的方式 本文将讲诉在C#的winform程序中如何调用摄像头: 1.调用USB摄像头 2.调用普通IP摄像头 3.通过摄像头SDK进行调用 使用的DLL 首先给上我所使用的DLL 调用U ...
- linux中cv调用摄像头,ubuntu中opencv调用摄像头
ubuntu中opencv调用摄像头 ubuntu中opencv调用摄像头 文章目录 一.Ubuntu中安装opencv 二.关于Linux如何开启摄像头 1.安装VMvareTools,这个是真的强 ...
- qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...
总第23篇 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们 ...
- Qt中,软件多语言国际化翻译的方法与步骤
Qt中,软件多语言国际化翻译的方法与步骤 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法 ...
- python安装库后无法调用摄像头_Python中怎么调用摄像头
Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...
- python调用电脑摄像头_Python中怎么调用摄像头
Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...
- 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
1 案例场景,通过C语言回调Java的代码,案例的最终界面: 2 案例的代码结构如下: 3 编写DataProvider的代码: package com.example.ndkcallbac ...
- c语言中调试时go的作用,C语言调用GO
C语言调用GO 最近工作中遇到需要在c语言里面调用go语言的需求,总结了一下,下面代码里面的每一个注释都很有用,闲话不多说,直接上代码~ 示例 GO代码: package main // 这个文件一定 ...
最新文章
- .Net Framework中的委托与事件
- Java项目:网上商城系统(java+jsp+servlert+mysql+ajax)
- Bootstrap -- 插件: 按钮状态、折叠样式、轮播样式
- 一些在NLP的面试中提问频率非常高的问题
- 【ArcGIS风暴】ArcGIS10.6获取栅格影像边界范围的三种方法案例详解
- 配置了坐标还是找不到serv_为什么老人家总是这疼那疼,还找不到原因?是矫情还是另有原因...
- 谈谈如何在面试中发掘程序猿的核心竞争力 什么是程序员的核心竞争力?
- JavaScript:变量提升作用域
- 阿里巴巴前架构师 360 度无死角剖析微服务
- 深度学习资料整理(深度神经网络理解)
- (超赞的Chrome翻译插件)沙拉查词-聚合词典划词翻译
- python打造微信聊天机器人_求问各位大佬,如何用Python写一款微信聊天机器人?...
- 如何在Word文档中制作三线表
- CRISC风险及信息系统监控认证
- CVPR引起巨大争议的新技术Face2Face:当科技先进到让人害怕
- Error response from daemon: conflict: unable to delete acdcfe83bcc5 (must be forced) - image is bein
- 微信小程序 MinUI 组件库系列之 label 标签组件
- 【无标题】SEO优化
- jy-12-SPRINGMYBATIS02——云笔记04-刘苍松
- CUDA学习之CUDA执行模型--part3