在Cognex VisionPro中,改变采集工具属性的过程涉及到使用工具级和操作员级的采集FIFO(先进先出)工具。
使用工具级 CogAcqFifoTool
工具级 API 允许开发者创建一个 CogAcqFifoTool
对象,这是一种专门用于图像采集的工具。在Visual Studio.NET中,你可以通过这个对象来配置和管理图像采集的各种属性。创建这个工具时,VisionPro会使用一组默认值来初始化许多采集FIFO属性。例如,许多采集FIFO的默认亮度属性(Brightness)为0.50,闪光灯启用属性(StrobeEnabled)的默认值为False。
使用操作员级 Acquisition FIFO
操作员级 API 提供了 ICogAcqFifo
接口,允许开发者对采集FIFO的属性进行更细粒度的控制。通过 ICogAcqFifo
接口,你可以访问所有可能的采集FIFO属性,并进行更改。与工具级 API 不同,操作员级 API 提供了对每个属性的直接访问和修改方法。
属性的修改
无论你选择使用工具级 API 还是操作员级 API,改变属性的方法有所不同。对于 CogAcqFifoTool
对象,你需要使用特定的方法来更改工具级属性。而对于 ICogAcqFifo
对象,你可以直接通过接口的方法来修改属性值。
使用工具级 CogAcqFifoTool创建和配置采集FIFO工具
-
命名空间引用
using Cognex.VisionPro; using Cognex.VisionPro.Exceptions;
这两行代码引入了Cognex VisionPro库及其异常处理类,以便在代码中使用相关的类和接口。
-
变量声明
private CogAcqFifoTool myAcqTool; private ICogAcqBrightness brightnessParams;
myAcqTool
: 声明一个CogAcqFifoTool
类型的变量,用于创建和管理图像采集工具。brightnessParams
: 声明一个ICogAcqBrightness
接口类型的变量,用于管理亮度参数。
-
初始化采集工具
private void InitializeAcqTool() { // Create a tool myAcqTool = new CogAcqFifoTool(); if (myAcqTool == null) throw new CogAcqCannotCreateFifoException("Unable to create Acquisition Fifo");
- 该方法用于初始化采集工具。首先创建一个新的
CogAcqFifoTool
实例,并将其赋值给myAcqTool
。 - 如果工具创建失败(理论上不会返回null,因为
new
操作不会返回null,但可以用于捕获异常),则抛出CogAcqCannotCreateFifoException
异常。
- 该方法用于初始化采集工具。首先创建一个新的
-
配置亮度参数
brightnessParams = myAcqTool.Operator.OwnedBrightnessParams; if (brightnessParams != null) brightnessParams.Brightness = .75;
- 通过
myAcqTool.Operator.OwnedBrightnessParams
获取与该工具关联的亮度参数。 - 如果成功获取亮度参数,则将其亮度值设置为0.75(即75%的亮度)。
- 通过
-
按钮点击事件
private void button1_Click(object sender, System.EventArgs e) { myAcqTool.Run(); cogDisplay1.Image = myAcqTool.OutputImage; }
- 当按钮被点击时,这段代码会执行。它调用
myAcqTool.Run()
方法,启动图像采集过程。 - 然后,将采集到的图像(
myAcqTool.OutputImage
)显示在cogDisplay1
控件中。
- 当按钮被点击时,这段代码会执行。它调用
使用操作员级 ICogAcqFifo创建和配置采集FIFO工具
-
引入命名空间:
using Cognex.VisionPro;
这行代码引入了Cognex VisionPro库,使得可以使用其中的类和接口。
-
变量声明:
private int tNum; private CogFrameGrabbers myFrameGrabbers; private ICogFrameGrabber myFrameGrabber; private ICogAcqFifo myAcqFifo; private ICogAcqBrightness brightnessParams;
tNum
: 用于存储采集图像的编号或序号。myFrameGrabbers
: 存储可用的帧抓取器(Frame Grabber)集合。myFrameGrabber
: 当前使用的帧抓取器。myAcqFifo
: 用于图像采集的FIFO。brightnessParams
: 用于配置亮度参数的接口。
-
初始化FIFO:
private void InitializeFifo() { const string VIDEO_FORMAT = "Sony XC75 640x480";
- 该方法用于初始化图像采集FIFO。首先定义一个常量
VIDEO_FORMAT
,指定使用的相机视频格式。
- 该方法用于初始化图像采集FIFO。首先定义一个常量
-
创建帧抓取器和采集FIFO:
myFrameGrabbers = new CogFrameGrabbers(); myFrameGrabber = myFrameGrabbers[0];
- 创建一个
CogFrameGrabbers
对象,获取系统中可用的帧抓取器列表,并选择第一个帧抓取器。
- 创建一个
-
创建采集FIFO:
myAcqFifo = myFrameGrabber.CreateAcqFifo(VIDEO_FORMAT, Cognex.VisionPro.CogAcqFifoPixelFormatConstants.Format8Grey, 0, false);
- 使用所选择的帧抓取器创建一个采集FIFO。此方法接受多个参数:
VIDEO_FORMAT
: 使用的相机格式。CogAcqFifoPixelFormatConstants.Format8Grey
: 指定图像的像素格式为8位灰度。0
: 在此处设置的参数通常用于配置附加选项,这里设置为0表示默认。false
: 指定是否使用硬件触发。
- 使用所选择的帧抓取器创建一个采集FIFO。此方法接受多个参数:
-
配置亮度参数:
brightnessParams = myAcqFifo.OwnedBrightnessParams; if (brightnessParams != null) brightnessParams.Brightness = .75;
- 获取与采集FIFO关联的亮度参数,并检查其是否可用。如果可用,将亮度设置为0.75(即75%的亮度)。
-
按钮点击事件:
private void button1_Click(object sender, System.EventArgs e) { cogDisplay1.Image = myAcqFifo.Acquire(out tNum); }
- 当用户点击按钮时,这段代码会执行。调用
myAcqFifo.Acquire(out tNum)
方法来采集一帧图像,并将其存储在cogDisplay1
控件中。Acquire
方法返回采集到的图像,并将图像的序号存储在tNum
中。
- 当用户点击按钮时,这段代码会执行。调用
扩展
配置相机采集工具的曝光、对比度、亮度等参数
-
引入命名空间:
using Cognex.VisionPro; using Cognex.VisionPro.Exceptions;
这些命名空间提供了Cognex VisionPro库的核心功能和异常处理。
-
变量声明:
private CogAcqFifoTool myAcqTool; private ICogAcqBrightness brightnessParams; private ICogAcqExposure exposureParams; private ICogAcqContrast contrastParams;
myAcqTool
: 用于创建和管理采集工具的变量。brightnessParams
,exposureParams
,contrastParams
: 分别用于配置亮度、曝光和对比度的参数。
-
初始化采集工具:
private void InitializeAcqTool() { // 创建采集工具 myAcqTool = new CogAcqFifoTool(); if (myAcqTool == null) throw new CogAcqCannotCreateFifoException("无法创建采集FIFO");
- 创建
CogAcqFifoTool
实例,并检查是否成功创建。
- 创建
-
配置亮度、曝光和对比度:
- 亮度:
brightnessParams = myAcqTool.Operator.OwnedBrightnessParams; if (brightnessParams != null) brightnessParams.Brightness = 0.75; // 设置亮度为75%
- 曝光:
exposureParams = myAcqTool.Operator.OwnedExposureParams; if (exposureParams != null) exposureParams.ExposureTime = 10000; // 设置曝光时间为10000微秒(10毫秒)
- 对比度:
contrastParams = myAcqTool.Operator.OwnedContrastParams; if (contrastParams != null) contrastParams.Contrast = 1.5; // 设置对比度为1.5倍
- 在每个参数设置之前,都检查是否成功获取相关参数对象。
- 亮度:
-
按钮点击事件:
private void button1_Click(object sender, System.EventArgs e) { myAcqTool.Run(); // 运行采集 cogDisplay1.Image = myAcqTool.OutputImage; // 显示采集的图像 }
- 当按钮被点击时,运行采集工具并将获取到的图像显示在
cogDisplay1
控件上。
- 当按钮被点击时,运行采集工具并将获取到的图像显示在
注意事项
- 确保你已经正确安装并引用了Cognex VisionPro库。
- 根据相机的具体型号和驱动程序,某些参数可能会有所不同,因此请查阅相关文档以获取更多信息。
- 确保在进行图像采集之前,所有参数均已正确设置,以获得最佳图像质量。