|
类型 |
图像采集相关 |
|
描述 |
读取相机指定缓存的图像,对应的触发模式为软触发模式(0)或者外触发模式(1 ~N),使用CAM_GET指令获取图像之前要先调用开始采集指令CAM_START。由于触发模式为多线程处理,为避免图像错乱,触发的图像只能读取一次,读取后缓存图像将被清理;如果缓存图像没有被读取则下一次触发采集的图像将覆盖旧的图像,但应注意在采集未完成之前使用CAM_GET仍可能读取到旧图像,即触发后读取的为上一次采集的图像,每次触发后的图像都进行读取可以避免此问题 为避免使用到上一次的图像或减少错误检查处理,采集前建议图像清空或置零ZV_CLEAR(img)或ZV_IMGSETCONST(img,0) |
|
语法 |
CAM_GET(img,buf_id,timeout=-1) 参数: img:ZVOBJECT类型,获取的图像 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() ‘停止相机采集 |