VisionPro相机操作类
在网站上看到这个,保存下来,以后用到了,再看一下。谢谢原创的分享!
#region 获得相机信息方法
/// <summary>/// 公有静态方法,查找单个相机。例如“Basler”/// </summary>public static ICogFrameGrabber FindFrameGrabber(string CameraType){ CogFrameGrabberGigEs frameGrabbers = new CogFrameGrabberGigEs(); foreach (ICogFrameGrabber fg in frameGrabbers) { if (fg.Name.Contains(CameraType)) { return (fg); } } return null;}/// <summary>/// 公有静态方法,查找相机列表。/// </summary>public static void FindFrameGrabber(List<ICogFrameGrabber> List){ CogFrameGrabberGigEs frameGrabbers = new CogFrameGrabberGigEs(); foreach (ICogFrameGrabber fg in frameGrabbers) { if (fg.Name.Contains("Basler")) { List.Add(fg); } }}/// <summary>/// 公有静态方法,创建相机初始化工具获取信息。/// </summary>public static ICogAcqFifo GetCogAcqFifo(int index){ List<ICogFrameGrabber> list = new List<ICogFrameGrabber>(); FindFrameGrabber(list); ICogFrameGrabber frameGrabbers = list[index]; ICogAcqFifo mCogAcqFifo = null; ; if (frameGrabbers == null) { mCogAcqFifo = null; return mCogAcqFifo; } if (frameGrabbers.Name.Contains("gm")) { mCogAcqFifo = frameGrabbers.CreateAcqFifo("Generic GigEVision (Mono)", CogAcqFifoPixelFormatConstants.Format8Grey, 0, false); } else if (frameGrabbers.Name.Contains("gc")) { mCogAcqFifo = frameGrabbers.CreateAcqFifo("Generic GigEVision (Bayer Color)", CogAcqFifoPixelFormatConstants.Format32RGB, 0, false); } return mCogAcqFifo;}/// <summary>/// 公有静态方法,查找相机数量。/// </summary>public static int GetAllCCDCount(){ CogFrameGrabberGigEs frameGrabbers = new CogFrameGrabberGigEs(); int count = frameGrabbers.Count; return count;}/// <summary>/// 公有静态方法,获得CCD曝光exposure。/// </summary>public static double GetCurCCDExposure(ICogAcqFifo acqFifo){ ICogAcqExposure exposureParams = acqFifo.OwnedExposureParams; double exposure; if (exposureParams == null) { exposure = 0; } else { exposure = exposureParams.Exposure; } return exposure;}/// <summary>/// 公有静态方法,获得CCD亮度light。/// </summary>public static double GetCurCCDLight(ICogAcqFifo acqFifo){ ICogAcqLight lightParams = acqFifo.OwnedLightParams; double light; if (lightParams == null) { light = 0; } else { light = lightParams.LightPower; } return light;}/// <summary>/// 公有静态方法,获得CCD对比度Contrast。/// </summary>public static double GetCurCCDContrast(ICogAcqFifo acqFifo){ ICogAcqContrast ContrastParams = acqFifo.OwnedContrastParams; double Contrast; if (ContrastParams == null) { Contrast = 0; } else { Contrast = ContrastParams.Contrast; } return Contrast;}/// <summary>/// 公有静态方法,获得CCD序列号SN/// </summary>public static string GetCurCCDSN(ICogAcqFifo acqFifo){ string SerialNumber; if (acqFifo == null) { SerialNumber = ""; } else { SerialNumber = acqFifo.FrameGrabber.SerialNumber; } return SerialNumber;}/// <summary>/// 公有静态方法,获得CCD名称Name/// </summary>public static string GetCurCCDName(ICogAcqFifo acqFifo){ string CCDName; if (acqFifo == null) { CCDName = ""; } else { CCDName = acqFifo.FrameGrabber.Name; } return CCDName;}/// <summary>/// 公有静态方法,获得CCD名称IP/// </summary>public static string GetCurCCDIP(ICogAcqFifo acqFifo){ string IP; if (acqFifo == null) { IP = "0.0.0.0"; } else { IP = acqFifo.FrameGrabber.OwnedGigEAccess.CurrentIPAddress; } return IP;}/// <summary>/// 公有静态方法,获得CCD名称HostIP/// </summary>public static string GetCurCCDHostIP(ICogAcqFifo acqFifo){ string HostIP; if (acqFifo == null) { HostIP = "0.0.0.0"; } else { HostIP = acqFifo.FrameGrabber.OwnedGigEAccess.HostIPAddress; } return HostIP;}/// <summary>/// 公有静态方法,获得CCD信号反跳转时间参数。/// </summary>public static double GetCurCCDLineDebouncerTime(ICogGigEAccess gigEAccess){ double LineDebouncerTimeAbs = 0; try { LineDebouncerTimeAbs = gigEAccess.GetDoubleFeature("LineDebouncerTimeAbs"); return LineDebouncerTimeAbs; } catch { } return LineDebouncerTimeAbs;}/// <summary>/// 公有静态方法,获得CCD帧率参数。/// </summary>public static double GetCurCCDAcquisitionLineRate(ICogGigEAccess gigEAccess){ double AcquisitionLineRateAbs = 0; try { AcquisitionLineRateAbs = gigEAccess.GetDoubleFeature("AcquisitionLineRateAbs"); return AcquisitionLineRateAbs; } catch { } return AcquisitionLineRateAbs;}#endregion 获得相机信息方法#region 设置相机参数方法/// <summary>/// 公有静态方法,设置CCD曝光exposure/// </summary>public static void ConfigureExposure(ICogAcqFifo acqFifo, double exposure){ ICogAcqExposure exposureParams = acqFifo.OwnedExposureParams; if (exposureParams != null) { exposureParams.Exposure = exposure; acqFifo.Prepare(); }}/// <summary>/// 公有静态方法,设置CCD亮度light。/// </summary>public static void ConfigureLight(ICogAcqFifo acqFifo, double light){ ICogAcqLight lightParams = acqFifo.OwnedLightParams; if (lightParams != null) { if (light > 1 || light < 0) { System.Windows.Forms.MessageBox.Show("参数需要在0-1区间!", "提示"); } else { lightParams.LightPower = light; acqFifo.Prepare(); } }}/// <summary>/// 公有静态方法,设置CCD对比度Contrast。/// </summary>public static void ConfigureContrast(ICogAcqFifo acqFifo, double Contrast){ ICogAcqContrast ContrastParams = acqFifo.OwnedContrastParams; if (ContrastParams != null) { if (Contrast > 1 || Contrast < 0) { System.Windows.Forms.MessageBox.Show("参数需要在0-1区间!", "提示"); } else { ContrastParams.Contrast = Contrast; acqFifo.Prepare(); } }}/// <summary>/// 公有静态方法,设置CCD外触发参数。/// </summary>public static void ConfigureTrigger(ICogGigEAccess gigEAccess, double lineDebouncerTime, double AcquisitionLineRateAbs){ //gigEAccess.SetFeature("TriggerSelector", "LineStart"); //gigEAccess.SetFeature("TriggerMode", "Off"); gigEAccess.SetFeature("TriggerSelector", "FrameStart");//帧 gigEAccess.SetFeature("TriggerMode", "On"); gigEAccess.SetFeature("TriggerSource", "Line3"); // gigEAccess.SetFeature("TriggerActivation", "RisingEdge"); // 或者可以触发激活到fallingedge。 gigEAccess.SetFeature("TriggerActivation", "FallingEdge"); //gigEAccess.SetFeature("LineSelector", "Line3"); gigEAccess.SetFeature("LineTermination", "false"); gigEAccess.SetDoubleFeature("LineDebouncerTimeAbs", lineDebouncerTime); gigEAccess.SetDoubleFeature("AcquisitionLineRateAbs", AcquisitionLineRateAbs);}public static void SetlineDebouncerTime(ICogGigEAccess gigEAccess, double time){ gigEAccess.SetFeature("TriggerSelector", "FrameStart");//帧 gigEAccess.SetFeature("TriggerSource", "Line1"); gigEAccess.SetFeature("TriggerActivation", "FallingEdge"); //gigEAccess.SetFeature("TriggerActivation", "RisingEdge"); gigEAccess.SetFeature("LineSelector", "Line1"); //gigEAccess.SetFeature("LineTermination", "false"); gigEAccess.SetDoubleFeature("LineDebouncerTimeAbs", time);}/// <summary>/// 公有静态方法,设置CCD旋转编码器触发。/// </summary>public static void ConfigureEncoder(ICogGigEAccess gigEAccess){ gigEAccess.SetFeature("ShaftEncoderModuleLineSelector", "PhaseA"); gigEAccess.SetFeature("ShaftEncoderModuleLineSource", "Line2"); gigEAccess.SetFeature("ShaftEncoderModuleLineSelector", "PhaseB"); gigEAccess.SetFeature("ShaftEncoderModuleLineSource", "Line3"); // Enable line termination for the RS-422 encoder signals gigEAccess.SetFeature("LineSelector", "Line2"); gigEAccess.SetFeature("LineTermination", "true"); gigEAccess.SetFeature("LineSelector", "Line3"); gigEAccess.SetFeature("LineTermination", "true"); // Set the shaft encoder module counter mode gigEAccess.SetFeature("ShaftEncoderModuleCounterMode", "IgnoreDirection"); gigEAccess.SetFeature("TriggerSelector", "LineStart"); gigEAccess.SetFeature("TriggerMode", "On"); gigEAccess.SetFeature("TriggerSource", "ShaftEncoderModuleOut"); gigEAccess.SetFeature("TriggerActivation", "FallingEdge"); //gigEAccess.SetFeature("TriggerActivation", "RisingEdge");}public static void ConfigureAcquisitionLineRateAbs(ICogGigEAccess gigEAccess, double _AcquisitionLineRateAbs){ gigEAccess.SetDoubleFeature("AcquisitionLineRateAbs", _AcquisitionLineRateAbs);}public static void ConfigurelineDebouncerTime(ICogGigEAccess gigEAccess, double _lineDebouncerTime){ gigEAccess.SetDoubleFeature("LineDebouncerTimeAbs", _lineDebouncerTime);}/// <summary>/// 公有静态方法,设置位宽。/// </summary>public static void SetBandwidth(ICogGigEAccess gigEAccess, double percentageOfBandwidth){ Double maxRate = 100 * 1024 * 1024; uint packetSize = gigEAccess.GetIntegerFeature("GevSCPSPacketSize"); Double packetTime = packetSize / maxRate; Double desiredTime = packetTime / percentageOfBandwidth; Double delaySec = desiredTime - packetTime; ulong timeStampFreq = gigEAccess.TimeStampFrequency; uint delay = (uint)(delaySec * timeStampFreq); gigEAccess.SetIntegerFeature("GevSCPD", delay);}#endregion 设置相机参数方法/// <summary>/// 公有静态方法,保存用户设置参数。/// </summary>public static void SaveUserSet(ICogGigEAccess gigEAccess){ gigEAccess.SetFeature("UserSetSelector", "UserSet1"); gigEAccess.ExecuteCommand("UserSetSave"); gigEAccess.SetFeature("UserSetDefaultSelector", "UserSet1");}------------------------Halcon,Visionpro高清视频教程,点击下载视频--------------------------
本文转载自 https://www.cnblogs.com/MachineVision/p/5775101.html
VisionPro相机操作类的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- VisionPro笔记:色彩区分
VisionPro:色彩区分 来自:blog.sina.com.cn/yangchao168 利用色彩来区分物体这类的项目没做过,总觉得很难,尤其是涉及到RGB和HSI等.看到VisionPro中有这 ...
- qt Multimedia 模块类如何使用?
qt 多媒体模块介绍 类名 英文描述 中文描述 QAudioBuffer Represents a collection of audio samples with a specific format ...
- Qt Multimedia 模块类如何使用?(表格)
qt 多媒体模块介绍 类名 英文描述 中文描述 QAudioBuffer Represents a collection of audio samples with a specific format ...
- 探索未知种族之osg类生物---器官初始化一
我们把ViewerBase::frame()比作osg这类生物的肺,首先我们先来大概的看一下‘肺’长什么样子,有哪几部分组成.在这之前得对一些固定的零件进行说明,例如_done代表osg的viewer ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
随机推荐
- 第一部分 OpenStack及其构成简介
一.云计算 云计算是一种计算模型,它将诸如运算能力.存储.网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样.因需而定.提供方便.动态改变和无限的虚拟 ...
- h5py
解决办法: sudo apt-get install libhdf5-dev sudo apt-get install python-h5py
- SSM框架之整合EhCache
本文主要讲ssm框架整合EhCache.或许有人会问什么是ehcache. 关于EhCache的介绍和优劣,我想下面的解答足以让读者明白: EhCache 是一个纯Java的进程内缓存框架,具有快速. ...
- 基于AppDomain的"插件式"开发
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...
- P1719 最大加权矩形
题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没 ...
- 笔记2:MYSQL 表操作
一.表约束 1.非空约束:not null 作用:定义表的某一列不能为空. >> alter table 表名 modify 列名 int not null; "添加非空约束&q ...
- jQuery 基础与运用
1. jquery引入以及入口函数 引入方式 <!--方式一:下载到本地,引入路径--> <script src="jquery-3.1.1.min.js"&g ...
- K9F2G08U0C NAND FLASH 的地址分析
计算物理地址 K9F2G08U0C是samsun出产的FLASH,容量为256MB 页--Page: (2K + 64)Byte 块--Block: (128K + 4K)Byte 128 / 2 = ...
- Linux | GCC如何实现代码编译&&汇编&&链接过程
正文: 每次我们程序员所写的 代码 是给程序员看的呢?还是给电脑看的?其实我们所写的代码只是我们程序员之间交流的一样特殊语言,电脑是看不懂的.那么我们如何实现人机交流呢?这就不得不请出我们我们今天 ...
- flink 常见问题整理
1. xml-apis 冲突问题 javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.D ...