CAM_GET -- 获取图像

类型

图像采集相关

描述

读取相机指定缓存的图像,对应的触发模式为软触发模式(0)或者外触发模式(1 ~N),使用CAM_GET指令获取图像之前要先调用开始采集指令CAM_START。由于触发模式为多线程处理,为避免图像错乱,触发的图像只能读取一次,读取后缓存图像将被清理;如果缓存图像没有被读取则下一次触发采集的图像将覆盖旧的图像,但应注意在采集未完成之前使用CAM_GET仍可能读取到旧图像,即触发后读取的为上一次采集的图像,每次触发后的图像都进行读取可以避免此问题

为避免使用到上一次的图像或减少错误检查处理,采集前建议图像清空或置零ZV_CLEAR(img)ZV_IMGSETCONST(img,0)

语法

CAM_GET(imgbuf_id,timeout=-1)

参数:

imgZVOBJECT类型,获取的图像

buf_id:指定的缓存id,序号为0开始

timeout:超时时间,大于等于0,默认值-1使用系统超时参数

适用控制器

支持ZV功能或者5系列以上的控制器

例子

例一 软触发方式获取单张图像

ZVOBJECT  img

CAM_SCAN("basler")   '扫描basler相机

CAM_COUNT(0)   '获取扫描到的相机个数

IF (0 = TABLE(0)) THEN   '扫描到的相机个数为0个则返回

PRINT "未找到相机"

RETURN

ENDIF

CAM_SEL(0)   '选择序号为0的相机

CAM_SETMODE(0)   '设置触发模式为软触发模式

CAM_START(1)   '开启相机的采集,指定缓存数量1

CAM_SETPARAM("TriggerSoftware", 0)   '使用软触发命令参数触发相机拍照,每触发一次拍照一次

CAM_GET(img,0)   '获取相机缓存中指定id序号为0的图像存放到img图像中

 

例二 软触发方式实现连续采集图像

ZVOBJECT  img

CAM_SCAN("basler")   '扫描basler相机

CAM_COUNT(0)   '获取扫描到的相机个数

IF (0 = TABLE(0)) THEN   '扫描到的相机个数为0个则返回

PRINT "未找到相机"

RETURN

ENDIF

CAM_SEL(0)   '选择序号为0的相机

CAM_SETMODE(0)   '设置触发模式为软触发模式

CAM_START(1)   '开启相机的采集,指定缓存数量1

WHILE(1)

CAM_SETPARAM("TriggerSoftware", 0)   '使用软触发命令参数触发相机拍照,每触发一次拍照一次

CAM_GET(img,0)   '获取相机缓存中指定id序号为0的图像存放到img图像中

WEND

 

例三 外触发模式单张采集(move_op模式)

ZVOBJECT  img

CAM_SCAN("basler")     '扫描basler相机

CAM_COUNT(0)       '获取扫描到的相机个数

IF (0 = TABLE(0)) THEN     '扫描到的相机个数为0个则返回

PRINT "未找到相机"

RETURN

ENDIF

CAM_SEL(0)         选择序号为0的相机

CAM_SETMODE(1)     设置触发模式为外触发模式

CAM_START(1)  开启相机的采集,指定缓存数量1

AXIS_ZSET(0)=2        ‘设置精准输出功能

Base(0)                   ‘选择轴0

MOVEABS(100)     移动到机械坐标100的位置

MOVE_OP(0,ON) 

MOVE_OP(0,OFF)     下降沿触发拍照,操作输出口,触发拍照

MOVEABS(200)      移动到机械坐标200的位置

CAM_GET(img,0)     获取相机缓存中指定id序号为0的图像存放到img图像中

CAM_STOP()         停止相机采集

 

例四 外触发模式单张采集(hw模式)

ZV0BJECT  img

CAM_SCAN("basler")     '扫描basler相机

CAM_COUNT(0)       '获取扫描到的相机个数

IF (0 = TABLE(0)) THEN     '扫描到的相机个数为0个则返回

PRINT "未找到相机"

RETURN

ENDIF

CAM_SEL(0)         选择序号为0的相机

CAM_SETMODE(1)     设置触发模式为外触发模式

CAM_START(1)  开启相机的采集,指定缓存数量1

AXIS_ZSET(0)=2        ‘设置精准输出功能

 

Table(100,99,100,101)   '触发op口翻转机械坐标位置

HW_PSWITCH2(2)

Hw_pswitch2(1, 0, 0, 100, 102,1)        '设置操作输出口0翻转位置

Base(0)                   ‘选择轴0

MOVEABS(200)     0移动到机械坐标200的位置,当相机设置为下降沿触发拍照,将在100-101的坐标触发拍照,图像自动保存到缓存0的通道

CAM_GET(img,0)     获取相机缓存中指定id序号为0的图像存放到img图像中

CAM_STOP()         停止相机采集