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

#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. C# HttpWebRequest请求超时解决办法

    request.GetResponse();超时问题的解决,和HttpWebRequest多线程性能问题,请求超时的错误, 解决办法 1.将http的request的keepAlive设置为false ...

  2. [luogu1600] 天天爱跑步

    题面 ​ 直接写正解吧, 不想再写部分分了, 对于\(u\)和\(v\), 我们可以将它拆成两条路径, \(u\)到\(lca(u, v)\)和\(lca(u, v)\)到v, 在这里只分析从\(u\ ...

  3. mac 安装secureCRT

    下载 http://www.xue51.com/mac/1632.html 会得到下面的文件: 打开dmg文件: 将SecureCRT移到Applications中,然后点击打开一次(重要): 然后打 ...

  4. Sequelize-nodejs-1-getting started

    Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, ...

  5. ZooKeeper(一)基本介绍

    本文转载自LDB's Blog,原文链接 ZooKeeper原理及其在Hadoop和HBase中的应用 目录 一.简介 二.基本概念 1. 集群角色 2. 会话(Session) 3. 数据节点(ZN ...

  6. 垂直方向兼容显示的内容多少的情况样式Flex布局

    使用flex弹性布局,无论里面的元素显示几个,都会居中显示,父元素设置成如下样式 display: flex; flex-direction: column; justify-content: cen ...

  7. CCF 201709-1打酱油

    问题描述 小明带着N元钱去买酱油.酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶.请问小明最多可以得到多少瓶酱油. 输入格式 输入的第一行包含一个整数N,表示小明可用于买酱油的钱数 ...

  8. jQuery----JQuery动画(hide()和show())(上)

    hide()和show()方法,可以设置动画效果,本文对这两种方法效果加以说明. hide(参数1,参数2): 参数1:时间,单位为毫秒,表示对象隐藏所用的时间 参数2:回调函数,该函数在对象隐藏后触 ...

  9. 大数据入门第二天——基础部分之zookeeper(上)

    一.概述 1.是什么? 根据凡技术必登其官网的原则,我们先去官网瞅一瞅:http://zookeeper.apache.org/ Apache ZooKeeper is an effort to de ...

  10. JavaWeb基础—HttpServletResponse

    HttpServletResponse对象代表服务器的响应. 这个对象中封装了向客户端发送数据.发送响应头,发送响应状态码的方法. 几个方法: 向客户端发送数据: getOutputStream() ...