zoukankan      html  css  js  c++  java
  • DxPackNet 2.视频截图和捕捉帧图片

    在上一节的基础上 打开了摄像头后:

    1.视频截图------调用  CatchBmp 方法即可获取当前帧的 bmp 图像,

               //调用截屏函数 获取当前图片
                Bitmap bmp = camCapture.CatchBmp();
                if (bmp != null)
                {
                    pictureBox1.Image = bmp;
                }

    2.帧捕获-----给设备类型加上捕获帧数据的回调函数,即可不断的获取所有输出的帧数据

            private void Form1_Load(object sender, EventArgs e)
            {
                cameras = DxFactory.CreateDxCompent<DxDeviceCollection>(DxDeviceCollection.EnvironmentCameras);
                camCapture = DxFactory.CreateDxCompent<IDxCameraCapture>(this, panel1);
                camCapture.FrameCb = camerasFrameCb;//注意 这里加的帧数据回调函数
                camCapture.Init(cameras[0]);
            }

    下面是回调处理代码 ,在回调中通过 BmpFromBuffer 方法将帧数据还原成了bmp图片

            private void camerasFrameCb(byte[] buffer, int size)
            {
                //注意-这里必须把数据拿到创建控件的线程上处理
                this.BeginInvoke(new camerasFrameCbHandler(_camerasFrameCb), buffer, size);
            }
            delegate void camerasFrameCbHandler(byte[] buffer, int size);
            public void _camerasFrameCb(byte[] buffer, int size)
            {
                //根据数据流获取适配的bmp图片对象
                Bitmap bmp = camCapture.BmpFromBuffer(buffer, size);
                if (bmp != null)
                {
                    Image oimg = pictureBox1.Image;
                    pictureBox1.Image = bmp;
                    if (oimg != null) oimg.Dispose();
                }
            }

     截图源代码  CameraShot.zip

    帧捕捉源代码 CamFrameCallBack.zip

  • 相关阅读:
    数据库目录
    设计模式
    mysql的索引结构
    ElasticSearch的基本操作
    转:基于Hadoop 的分布式网络爬虫技术学习笔记
    爬虫 es 搜索引擎
    vue+django2.0.2-rest-framework 生鲜项目
    fiddler抓包时显示Tunnel to......443
    安装 Win10 + Ubuntu 双系统过程
    ROS 订阅者的创建及使用
  • 原文地址:https://www.cnblogs.com/dint/p/8418788.html
Copyright © 2011-2022 走看看