关于visionpro工具操作原理文章甚少,以下是本人自己查阅visionpro官方文档完成的:
题外话:对于这个工具,我更多的是在实现3D项目的工作上面遇到过,因为有些3D项目就是需要运行两张图片,一张是idb格式的(存放3D信息),一张是png或其他格式。cognex自带的image source可以读取一张,这个CogImageFileTool也可以读取一张。但是我还得说明一下这个工具不可以连续的读图,需要连续读取两张图的话要使用到脚本来实现(后面写一写)。工具长这个亚子:
VisionPro使用称为采集FIFO(先进先出)队列的对象来采集图像。要获取图像,请向FIFO发出请求。发出请求后,您可以继续执行其他任务(包括发出更多采集请求),也可以等待采集过程完成并获得图像。采集FIFO首先处理最旧的请求,并对在采集图像时可能到达的任何其他请求进行排队。当您获取图像时,它们会从FIFO中删除。 (FIFO在数据结构里面挺常见的)
不连续读图(点击正方形框的按钮就可以):
剩下的操作就是将图片引入其他工具的常规操作。
连续读图功能:
连续读取两张图片需要使用到高阶脚本语句(c# Advanced script)。
核心语句(注意了路径不可以使用"\",这个会报错无法转义):
CogImageFileTool picture = new CogImageFileTool();//实例化picture
picture.Operator.Open("D:/1.png", CogImageFileModeConstants.Read);//name为图片名字,其中
CogImageFileModeConstants常量包括Read和Write,这里用的是读图Read,而Write可以用于保存图片.
picture.Run();//工具运行,这个时候就已经把图片读取进来了
如果你要实现将这个代码传给其他的工具,举个例子,传给Blob工具,可以这样写:
string path="xxxxxx";//定义图片路径
CogImageFileTool picture = new CogImageFileTool();//实例化变量picture
picture.Operator.Open(path, CogImageFileModeConstants.Read);//path为图片路径,其中
CogImageFileModeConstants常量包括Read和Write,这里用的是读图Read,而Write可以用于保存图片.
picture.Run();//工具运行,这个时候就已经把图片读取进来了
CogBlobTool blob1 = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool;//声明一个CogBlobTool类型的工具blob1
blob1.InputImage = picture.OutputImage;//blob1获取变量picture读取的图片
blob1.Run();//工具blob1运行
如果你想连续的读图,其实已经非常容易了,那就是用一个for循环,在读取图片路径的地方设置一个i,这个i可以每读一张就加1,你在图片名字的地方将他们修改为有顺序的名字就可以了。
来一段代码(这个代码的作用是读取文件夹的类型为png的图片,并且顺便统计了数量):
ArrayList lisName = new ArrayList();
foreach (FileInfo file in folder.GetFiles("*.*", SearchOption.AllDirectories))//读取文件夹图片
{
count++;//count统计读了多少张图片
if (file.Name.Contains(".png"))//判断图片包括.png后缀
{
string[] ArraystPngName = file.Name.ToString();//获取图片名字
lisName.Add(ArraystPngName[0]);//列入一个listName列表
}
}
当然这个些脚本都是一个作业流程的开头部分,后面的重点还是对图像进行处理! 以上的代码都是手敲的,难免可能存在疏忽,但是思路应该是对的,希望可以帮到你!