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

#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. 将Tensor输出到文件

    ) local file = io.open('/home/xbwang/Desktop/part2original','a') ,length do number = part2[j] file:w ...

  2. 真机测试出现INSTALL_FAILED_USER_RESTRICTED安装错误

    之前用小米测试的时候遇到一个问题,两个一样型号的手机一个能直接用Android Studio安装公司的项目一个却不可以,总是报INSTALL_FAILED_USER_RESTRICTED错误,具体见下 ...

  3. cpu 基础知识

    认识cpu(中央处理器简称处理器)也叫CPU,Central Processing Unit线程是安排CPU执行的最小单位 四核八线程内涵: 每个单位时间内,一个CPU只能处理一个线程(操作系统:th ...

  4. JVM(一)Java内存模型

    前言 对于从事C.C++程序开发的开发人员来说,在开始使用对象之前,他们都需要使用new关键字为对象申请内存空间,在使用完对象之后,也需要使用delete关键字来释放对象占用的内存空间.对于Java程 ...

  5. Linux简介及最常用命令(简单易学,但能解决95%以上的问题)

    转载 longctw 版权声明:只为分享.欢迎转载^V^ https://blog.csdn.net/xulong_08/article/details/81463054 Linux是目前应用最广泛的 ...

  6. php使用urlencode对中文编码而引出的问题:urlencode和rawurlencode的区别

    事件背景: 之前做h5小游戏,需要后端输出用户的相关信息给前端,输出的内容有:用户id,用户昵称等字段,使用get方式传参.后端使用PHP语言对中文昵称进行格式化编码,使用的是常用的urlencode ...

  7. VB6 Access 事务(Transaction)

    VB6 Access 事务 On Error GoTo err_trans intTrans = conn.BeginTrans '开始事务 X = count For i = 0 To X sql= ...

  8. 20155307刘浩《网络对抗》逆向及Bof基础

    20155307刘浩<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会回显任何用户输 ...

  9. [Windows]_[中级]_[崩溃报告的中级解决方案]

    场景 1.在Windows上用C/C++开发软件, 经常会出现软件级别的崩溃情况, 如果用户看到这种崩溃报告, 那么一般会认为软件质量不高, 从而不想用. Windows上就会有崩溃报告这种噢给你工具 ...

  10. 5308: [Zjoi2018]胖

    5308: [Zjoi2018]胖 链接 分析: 题目转化为一个点可以更新多少个点,一个点可以更新的点一定是一个区间,考虑二分左右端点确定这个区间. 设当前点是x,向右二分一个点y,如果x可以更新到y ...