C# 大华相机图像采集
using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading; using System.Windows.Forms; using ThridLibray;namespace _1_5相机SDK图像采集 {public class Camera{List<IGrabbedRawData> m_frameList = new List<IGrabbedRawData>(); /* 图像缓存列表 */Thread renderThread = null; /* 显示线程 */bool m_bShowLoop = true; /* 线程控制变量 */Mutex m_mutex = new Mutex(); /* 锁,保证多线程安全 */public event Action<Bitmap> NewImage;public Camera(){if (null == renderThread){renderThread = new Thread(new ThreadStart(ShowThread));renderThread.IsBackground = true;renderThread.Start();}}/* 转码显示线程 */private void ShowThread(){while (m_bShowLoop){if (m_frameList.Count == 0){Thread.Sleep(1);continue;}/* 图像队列取最新帧 */m_mutex.WaitOne();IGrabbedRawData frame = m_frameList.ElementAt(0);m_frameList.RemoveAt(0);m_frameList.Clear();m_mutex.ReleaseMutex();/* 主动调用回收垃圾 */GC.Collect();try{/* 图像转码成bitmap图像 */var bitmap = frame.ToBitmap(false);if (NewImage!=null){NewImage(bitmap);}}catch (Exception exception){Catcher.Show(exception);}}}/* 设备对象 */private IDevice m_dev;/* 相机打开回调 */private void OnCameraOpen(object sender, EventArgs e){MessageBox.Show("相机已打开!");}/* 相机关闭回调 */private void OnCameraClose(object sender, EventArgs e){MessageBox.Show("相机已关闭!");}/* 相机丢失回调 */private void OnConnectLoss(object sender, EventArgs e){m_dev.ShutdownGrab();m_dev.Dispose();m_dev = null;}public void btnOpen(){try{/* 设备搜索 */List<IDeviceInfo> li = Enumerator.EnumerateDevices();if (li.Count > 0){/* 获取搜索到的第一个设备 */m_dev = Enumerator.GetDeviceByIndex(0);/* 注册链接事件 */m_dev.CameraOpened += OnCameraOpen;m_dev.CameraClosed += OnCameraClose;/* 打开设备 */if (!m_dev.Open()){MessageBox.Show(@"连接相机失败");return;}/* 打开Software Trigger */m_dev.TriggerSet.Open(TriggerSourceEnum.Software);/* 设置图像格式 */using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]){p.SetValue("Mono8");}/* 设置曝光 */using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ExposureTime]){p.SetValue(1000);}/* 设置增益 */using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.GainRaw]){p.SetValue(1.0);}/* 设置缓存个数为8(默认值为16) */m_dev.StreamGrabber.SetBufferCount(8);/* 注册码流回调事件 */m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed;/* 开启码流 */if (!m_dev.GrabUsingGrabLoopThread()){MessageBox.Show(@"开启码流失败");return;}}}catch (Exception exception){Catcher.Show(exception);}}/* 码流数据回调 */private void OnImageGrabbed(Object sender, GrabbedEventArgs e){m_mutex.WaitOne();m_frameList.Add(e.GrabResult.Clone());m_mutex.ReleaseMutex();}/* 停止码流 */public void btnClose(){try{if (m_dev == null){throw new InvalidOperationException("Device is invalid");}m_dev.StreamGrabber.ImageGrabbed -= OnImageGrabbed; /* 反注册回调 */m_dev.ShutdownGrab(); /* 停止码流 */m_dev.Close(); /* 关闭相机 */}catch (Exception exception){Catcher.Show(exception);}}/* 窗口关闭 */public void OnClosed(EventArgs e){if (m_dev != null){m_dev.Dispose();m_dev = null;}m_bShowLoop = false;renderThread.Join();}/* 执行软触发 */public void SoftwareTrigger(){if (m_dev == null){throw new InvalidOperationException("Device is invalid");}try{m_dev.ExecuteSoftwareTrigger();}catch (Exception exception){Catcher.Show(exception);}}} }
转载于:https://www.cnblogs.com/BKYZFSN/p/11027417.html
C# 大华相机图像采集相关推荐
- 使用大华NetSDK对接大华相机
使用大华NetSDK对接相机 一. 下载大华NetSDK support 根据自己的需要下载对应版本的sdk.这边我们就以Win32版本作为开发使用. 下载的文件解压后,内部文件如下图所示: 开发使用 ...
- 1.8安装大华相机SDK及测试
不同工业相机的sdk不同,可以到相应的官网下载,我使用的是大华相机 下载SDK: 官方下载地址:http://download.huaraytech.com/pub/sdk/ 我使用的是2.2.5的L ...
- C#调用大华相机SDK获取图片,转换成VisionPro的Icogimage格式
文章讲的是C#调用大华相机SDK,通过回调事件获取图片并转换成visionpro的Icogimage格式,文章底部会分享例程.在调用SDK之前,需要先安装大华的相机软件到C盘,不安装到C盘会显示依赖项 ...
- 大华相机IP网段更新配置
大华相机在出厂后一般都会对应一个IP,如192.169.1.XX.实际项目中,为了将相机放到与wifi相同的频段,一般需要更改相机的IP和网关,使之与wifi处于相同频段,那么就可以在wifi覆盖的所 ...
- 大华相机接入web页面实现人脸识别
先看下效果,中间主视频流就是大华相机(视频编码H.264),海康相机(视屏编码H.265) 前端接入视屏流代码 <!--视频流--><div id="col2"& ...
- 杭州大华相机 rtsp 流格式
杭州大华(Dahua)相机的 RTSP(Real-Time Streaming Protocol)流格式一般遵循以下结构: rtsp://[username]:[password]@[camera_i ...
- Unity调用大华相机SDK采集图像及基本功能设定
unity平台对视频播放不是很友好,而大华的SDK只有c#版本的并没有专门为unity做出来SDK,最开始尝试过使用SDK里面的方式获取YUV格式的视频流,再讲YUV格式的视频流转换为unity可以播 ...
- 大恒相机图像采集 linux+python
运行环境: Ubuntu18.04, 大恒相机python库,大恒相机linux驱动,python2.7 代码: import gxipy as gx from PIL import Image im ...
- 海康大华相机rtsp
海康: rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 说明: username: 用户名 ...
- 大华与巴斯勒相机实现单拍的不同
1.巴斯勒相机:直接抓取图片 2.大华相机:需要停止抓取之后再开始抓取单独的图片
最新文章
- Vue中插入HTML代码的方法
- r.java没有生成_r.java文件没有生成
- Flink从入门到精通100篇(二十一)-万字长文详解 Flink 中的 CopyOnWriteStateTable
- ElasticSearch重启之后shard未分配问题的解决
- c# mysql 插入 和 查询_C#对数据库的操作(增删改查)
- Docker 容器的常用命令
- 多个基因集富集结果泡泡图绘制展示
- js 学习笔记(一)
- 两台主机经过路由器传送数据的网络原理
- 逆序对算法c语言,归并排序求逆序对的代码(C语言)
- 高频交易的思路模型简介
- python切片详解_python切片及sys.argv[]用法详解
- 汇编Masm更改颜色
- win7取消计算机密码怎么设置,win7开机密码怎么取消
- 使照片带有妙的电影色彩55款工具套件的lr微妙的电影调色预设
- 关于TCP/IOCP构架中出现的假死连接解决方案
- Web应用程序 [/XXX_war_exploded] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。
- 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
- PHP实现RSA算法
- win10 UEFI+BMR无损改为UEFI+GPt
热门文章
- 离散数学第六版第er章偶数题答案_离散数学答案(尹宝林版)第二章习题解答
- iOS测试包安装途径实践
- CAT8八类网线标准、测试与应用
- dll反编译工具java_JAVA反编译工具的使用
- CEIWEI CommMonitor 串口监控精灵v12.0 串口过滤;串口监控;Serial port monitor tools
- 1301_两种方式为开发板增加串口监控功能
- PG数据库表及表注释查询语句
- arduino 智能车组装步骤_Arduino 智能避障智能小车制作图文教程
- 用 Javascript 生成二维码
- 计算机系统基础-袁春风老师-mooc-第二章测试习题及解析