• 【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运行截图:

    image


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

     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

    项目中使用截图:

    image

  • 相关阅读:
    javascript中闭包
    bootstrap模版
    JS中DOM操作
    css重置样式
    API--未完待续
    JavaScript 的面向对象
    「 JavaScript 篇 」
    CSS篇
    淘宝前端的一些面试题
    BOM里的window命令; cookie的用法
  • 原文地址:https://www.cnblogs.com/zhongxia/p/4248835.html
Copyright © 2020-2023  润新知