【C#】#100 调用摄像头

需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像。

下面写一个调用摄像头的方法

案例:调用摄像头的一个DEMO【效果图】

使用的类库:AForge.dll   【Demo下载,Demo里面有类库】

1、检测电脑上的摄像头设备

FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

用Count判断摄像头设备的个数,如果没有摄像头,则抛出异常【自行处理异常】,有摄像头,则添加到下拉框中

if (videoDevices.Count == 0)
           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(320, 240);
 videoSource.DesiredFrameRate = 1;

 //为摄像头控件设置摄像头获取的图片
videPlayer.VideoSource = videoSource;
 //开启摄像头
videPlayer.Start();

3、关闭摄像头【也可以用 Stop() 方法关闭】

videPlayer.SignalToStop();
videPlayer.WaitForStop();

Demo运行截图:



项目中,多了一个截图:把摄像头上的图片绘制下来

 img = new Bitmap(102, 126, PixelFormat.Format24bppRgb); //设置图片的大小,位数
 videPlayer.DrawToBitmap((Bitmap)img, new Rectangle(0, 0, 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, 0, 0);
 draw.Dispose();
 img.Dispose();
 videPicture.Image = bmp;
#endregion

项目中使用截图:

时间: 2024-10-27 05:41:20

【C#】#100 调用摄像头的相关文章

android调用摄像头拍照

调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中:     // 调用摄像头         Button b = (Button) findViewById(R.id.btn1);     b.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             // Here we fire the inte

使用vue做移动app时,调用摄像头扫描二维码

现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能 下面我就为大家讲解一下,我在项目中调用这功能的过程. 首先我们需要一个中间框架,hbuilder http://www.html5plus.org/doc/zh_cn/accelerometer.html 这个是html5+的文档地址,我们找到Barcode模块, 有这么多,然后我们往下找 找到这段代码 <!DOCTYPE html> <html> <

win7系统下使用openCV调用摄像头问题

鄙人今日尝试使用openCV调用摄像头做图片中圆的圆心位置检测时,意外发现程序能成功调用笔记的集成摄像头,但却无法调用外接的USB摄像头.(使用的为OpenCV1.0 + VC6.0) 使用程序如下: #include"cv.h"#include"highgui.h"#include"cvcam.h"#include"iostream"using namespace std; int main(int argc,char* a

Unity 3D 调用摄像头捕获照片 录像

1,要想调用摄像头首先要打开摄像头驱动,如果用户允许则可以使用. 2,定义WebCamTexture的变量用于捕获单张照片. 3,连续捕获须启用线程. 实现代码: using UnityEngine; using System.Collections; using System.IO; using System.Runtime.Serialization; using System.Runtime .Serialization.Formatters.Binary; using System.Th

JMF调用摄像头粉屏的问题(win10 64位系统)

最近突然想做一个人脸识别的程序,图像的获取可以从本地或者摄像头获取. 1.从本地获取比较简单,不多说. 2.从摄像头获取图片.网上查了一下,都是用的JMF(但是JMF已经很久没有更新,而且只支持32位的JDK,如果知道有更好的麻烦推荐一下!) 下载JMF(http://www.oracle.com/technetwork/java/javase/download-142937.html) 安装 安装完之后桌面上回出现JMStudio的快捷图标,  点开测试一下,file->capture: 摄像

Ionic系列——调用摄像头拍照和选择图库照片功能的实现

1.需求描述 最近要做一个功能就是调用摄像头拍照,然后上传照片的功能,或者直接打开图库选择照片然后上传. 2.准备 ①.添加插件$cordovaCamera cordova plugin add cordova-plugin-camera ②.在controller中添加依赖 3.代码实现 $scope.takePhoto=function(){     var options = {                                                        

python+opencv读取视频,调用摄像头

引用 import cv2 import numpy 创建摄像头对象 cap = cv2.VideoCapture("videoTest/test1.mp4") #参数为视频文件目录 逐帧显示实现视频播放 while 1: ret, frame = cap.read() #读取 cv2.imshow("capture", frame) #显示 if cv2.waitKey(100) & 0xff == ord('q'): #按q退出 break 释放摄像头对

麦子学院Android实战调用摄像头代码分享

Android如何实现调用摄像头?在安卓APP开发的过程中,经常会需要调用手机自身摄像头拍照的代码,那么android调用摄像头的代码是什么呢?现在麦子学院android开发老师告诉大家,android调用摄像头这个方法十分的简单实用,有需要的小伙伴可以参考下. 应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄

win8 metro 调用摄像头拍摄照片并将照片保存在相应的位置

刚刚做过这类开发,所以就先献丑了,当然所贴上的源码都是经过验证过的,已经运行成功了,希望可以给大家一些借鉴: 下面是metro UI代码: <Page x:Class="Camera.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"