在网站上看到这个,保存下来,以后用到了,再看一下。谢谢原创的分享!

#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相机操作类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. VisionPro笔记:色彩区分

    VisionPro:色彩区分 来自:blog.sina.com.cn/yangchao168 利用色彩来区分物体这类的项目没做过,总觉得很难,尤其是涉及到RGB和HSI等.看到VisionPro中有这 ...

  3. qt Multimedia 模块类如何使用?

    qt 多媒体模块介绍 类名 英文描述 中文描述 QAudioBuffer Represents a collection of audio samples with a specific format ...

  4. Qt Multimedia 模块类如何使用?(表格)

    qt 多媒体模块介绍 类名 英文描述 中文描述 QAudioBuffer Represents a collection of audio samples with a specific format ...

  5. 探索未知种族之osg类生物---器官初始化一

    我们把ViewerBase::frame()比作osg这类生物的肺,首先我们先来大概的看一下‘肺’长什么样子,有哪几部分组成.在这之前得对一些固定的零件进行说明,例如_done代表osg的viewer ...

  6. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  7. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  8. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  9. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

随机推荐

  1. Kafka设计解析(十五)Kafka controller重设计

    转载自 huxihx,原文链接 Kafka controller重设计 目录 一.Controller是做什么的 二.Controller当前设计 三.Controller组成 四.Controlle ...

  2. Oracle(一)执行计划

    目录 一.什么是执行计划 二.如何查看执行计划 三.如何读懂执行计划 1. 执行顺序的原则 2. 执行计划中字段解释 3. 谓词说明 4. JOIN方式 4.1 HASH JOIN(散列连接) 4.2 ...

  3. BI之报表测试总结

    报表测试总结: 1.测试准备工作: 数据准备 保证足够多的有效数据 清楚报表中涉及到的算法.公式 清楚业务功能接口 2.报表测试点 基本测试点:界面.控件.格式.布局.明显的数据错误.js报错.报表标 ...

  4. 郑重推荐开源CANopen协议栈CANFestival(LGPL许可)!!!!!!!!

    郑重推荐开源CANopen协议栈CANFestival(LGPL许可)!!!!!!!!(这条文章已经被阅读了 次) 时间:2010/03/04 06:47am 来源:winshton [这个贴子最后由 ...

  5. sencha 2.3中自己定义PullRefreshFn给PullRefresh加入下拉刷新事件

    Sencha removed the refreshFn from the pullrefresh plugin in ST 2.2. Here is an user extension with g ...

  6. layedit富文本编辑器获取纯文字内容和全部内容

  7. Vivado中xilinx_BRAM IP核使用

     Vivado2017.2 中BRAM版本为 Block Memory Generator Specific Features  8.3 BRAM IP核包括有5种类型: Single-port RA ...

  8. 基于BM3803处理器平台的PCI软硬件调试问题汇总(持续更新中)

    一:相关基本配置: FPGA:  XILINX XC5VFX130T-1FFG1738 PCI接口部分使用XILINX提供的pci32_v4_8硬核:PCI控制器由FPGA逻辑实现,主要完成PCI设备 ...

  9. 6.Exceptions-异常(Dart中文文档)

    异常是用于标识程序发生未知异常.如果异常没有被捕获,If the exception isn't caught, the isolate that raised the exception is su ...

  10. SpringMVC拓展——利用maven构建springMVC项目

    一.构建项目结构 首先需要构建一个符合目录结构的maven项目 file->new->maven project,勾选 create a simple project->next / ...