【C#】#100 调用摄像头
需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像。
下面写一个调用摄像头的方法
案例:调用摄像头的一个DEMO【效果图】
使用的类库:AForge.dll 【Demo下载,Demo里面有类库】
1、检测电脑上的摄像头设备
FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
用Count判断摄像头设备的个数,如果没有摄像头,则抛出异常【自行处理异常】,有摄像头,则添加到下拉框中
if (videoDevices.Count == )
throw new ApplicationException(); foreach (FilterInfo device in videoDevices)
{
tscbxCameras.Items.Add(device.Name);
}
2、连接摄像头
检测到摄像头,就可以开始连接摄像头,获取图像啦。
//选择下拉框中的一个摄像头设备
VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString); //设置获取显示图像框的大小
videoSource.DesiredFrameSize = new Size(, );
videoSource.DesiredFrameRate = ; //为摄像头控件设置摄像头获取的图片
videPlayer.VideoSource = videoSource;
//开启摄像头
videPlayer.Start();
3、关闭摄像头【也可以用 Stop() 方法关闭】
videPlayer.SignalToStop();
videPlayer.WaitForStop();
Demo运行截图:
项目中,多了一个截图:把摄像头上的图片绘制下来
img = new Bitmap(, , PixelFormat.Format24bppRgb); //设置图片的大小,位数
videPlayer.DrawToBitmap((Bitmap)img, new Rectangle(, , videPlayer.Width, videPlayer.Height)); //绘制图像到Img对象
videPicture.Image = img;
//显示到PictureBox控件上
在这里遇到过一个问题,那就是 GDI+一般性错误【原因:资源占用】
遇到问题的情况:
1、修改人员信息的时候,先从本地读取图片文件,赋值到PictureBox上。
2、保存的时候会再把PictureBox的图片保存到本地硬盘中。
解决办法: 【解除图片资源占用即可】
1、把本地图片读取出来,深复制一份
2、把深复制的那一份赋值到PictureBox
3、关闭本地图片资源的关闭
#region 深复制图片,并且关闭资源,防止出现占用
//图片的深复制,并且关闭占用图片文件的资源
img = new Bitmap(path);
Image bmp = new Bitmap(img.Width, img.Height);
Graphics draw = Graphics.FromImage(bmp);
draw.DrawImage(img, , );
draw.Dispose();
img.Dispose();
videPicture.Image = bmp;
#endregion
项目中使用截图:
【C#】#100 调用摄像头的更多相关文章
- Android开发中如何调用摄像头的功能
我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 & ...
- python+opencv读取视频,调用摄像头
引用 import cv2 import numpy 创建摄像头对象 cap = cv2.VideoCapture("videoTest/test1.mp4") #参数为视频文件目 ...
- 使用vue做移动app时,调用摄像头扫描二维码
现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能 下面我就为大家讲解一下,我在项目中调用这功能的过程. 首先我们需要一个中间 ...
- C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能
网上找了很多代码,都比较零散,以下代码纯自己手写,经过测试.下面有链接,下载后可以直接使用. 介绍: 自动识别:点击Start按钮会调用PC摄像头,代码内置Timer,会每100毫秒识别一下当前摄像头 ...
- js实现初始化调用摄像头
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- unity调用摄像头的方法
http://blog.csdn.net/cocoa_china/article/details/10527995 using UnityEngine; using System.Collection ...
- java javacv调用摄像头并拍照
调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...
- Android入门(十六)调用摄像头相册
原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xml ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
随机推荐
- 牛客网剑指offer java 全部题解
经过数月的努力,终于更完了牛客网的66道剑指offer,以下的顺序和大家在牛客网的顺序是一样的(排序也花了不少时间),希望对大家找工作/提高算法能力能起到些许帮助. 每天一道剑指offer-二维数组中 ...
- Golang 并发Groutine实例解读(二)
go提供了sync包和channel机制来解决协程间的同步与通信. 一.sync.WaitGroup sync包中的WaitGroup实现了一个类似任务队列的结构,你可以向队列中加入任务,任务完成后就 ...
- Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
最近在研究服务器高可用集群 (HA)…… 搭建了主备两台Keepalived,配置什么的全是网上照抄的,被验证过无数遍的示例…… 然而Master和Backup无法自动切换.两边会同时绑定浮动IP(V ...
- hadoop学习笔记(八):MapReduce
一.MapReduce编程模型 一种分布式计算框架,解决海量数据的计算问题. MapReduce将整个并行计算过程抽象到两个函数: Map(映射):对一些独立元素组成的列表的每一个元素进行制定的操作, ...
- [转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件
在ASP.Net中,为了方便表单的验证,提供了验证控件来完成表单输入数据的验证.这些验证控件确实是功能强大,为写表单程序提供了极大的便利.但是,在不熟悉的情况下,经常碰到问题.其中,最常见的是遇到错误 ...
- spring jpa和mybatis整合
spring jpa和mybatis整合 前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目 后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查 ...
- ModelState.IsValid always returning true while mocking a request
ASB.net MVC 视图验证里有一个IValidatableObject接口.这里面有一个验证方法.通常我们表单提交的时候dto就是用一个实现IValidatableObject这个接口的实体. ...
- 在php中怎么利用js把参数传递给弹窗
1.在php页面中经常用到把参数传递给弹窗页面,在弹窗页面中操作 2.两种方式,截图为一种 3.最常见的就是利用hideen隐藏域,点击按钮的时候把要传递的参数值传递给隐藏域,需要的时候在弹窗中获取. ...
- 关于redux
react将dom解耦,不用直接操作dom,使用了状态机制,当状态改变时视图就会相应更新.我们知道在react中,父组件可以将一些状态传递给子组件,让子组件的视图相应更新,这时我们会发现,只有有关联的 ...
- opencv之图像拼接
参考博客http://blog.csdn.net/u011630458/article/details/44175965 博主:羽凌寒 之后再进行系统学习