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提供, ...
随机推荐
- 第一章 进入java的世界
一.你要做的事情: 1. 编写源代码:xxx.java 2. 编译器编译:检测代码错误 3. 输出:编译器输出xxx.class 4. 运行:java虚拟机运行xxx.class
- AE-----界面介绍
AE-----界面介绍 一.大纲leiji 层级: 比如:高楼一层一层的盖起来的.千层蛋糕(一层一层的).地质(一层一层构造的) 图层的特征:有顺序.上面的一层总会覆盖掉下面的一层. AfterEff ...
- 【转】HBase架构解析
转载地址:http://www.blogjava.net/DLevin/archive/2015/08/22/426877.html HBase架构组成 HBase采用Master/Slave架构搭建 ...
- java集合---迭代器iterator
一:ArraryList 最终继承超级接口Collection,Colection接口继承Iterator接口. public interface Collection<E> exten ...
- PAT乙级1030
1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择 ...
- ASP.NET Core 应用程序Startup类介绍 (转载)
Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...
- iview 或 element-ui table 列表表头加样式
table 表头有时候需要加一些小样式比如 必填项 这是我项目中遇到的需求=== 比例,产品, 部门为必填项,这个时候就需要在表头加个红色小星星. 首先在table中绑定:header-cell-c ...
- Linux简介及最常用命令(简单易学,但能解决95%以上的问题)
转载 longctw 版权声明:只为分享.欢迎转载^V^ https://blog.csdn.net/xulong_08/article/details/81463054 Linux是目前应用最广泛的 ...
- mypwd的编译和测试
pwd指令及其功能 命令格式: pwd [选项] 命令功能: 查看"当前工作目录"的完整路径 常用参数: 一般情况下不带任何参数 如果目录是链接时: 格式:pwd -P 显示出实际 ...
- 2015306 白皎 《网络攻防》Exp1 进阶
2015306 白皎 <网络攻防>Exp1 进阶 Task1 64位shellcode的编写及注入 - 自己编写一个64位shellcode.参考shellcode指导. - 自己编写一个 ...