The value of Zmotion is to bring customers more success!
ROI创建有以下两个优点:
1.可缩减处理图像的区域范围,减少图像像素处理量,缩短图像处理时间,提升效率。
在采集到一张图像后,即可在图像上框选感兴趣的区域创建ROI。
(一)VPLC516E构架图
1. SET_REDRAW -- 指定区域重新绘制(需要在自定义元件的刷新函数中使用)
参数:
X,Y:显示区域左上角的坐X、Y坐标位置
参数:
num:触摸对应的位置的X、Y坐标分别存储在table(num), table(num+1)
hittype = ZV_HMIADJRECT(mousex,mousey,tab_rect,hittype)
mousex:HMI 控件的鼠标X坐标
mousey:HMI 控件的鼠标Y坐标
tab_rect:保存矩形ROI参数的TABLE索引,依次为ltx、lty、 rbx、rby,即分别为正矩形左上角坐标ltx、lty,右下角坐标rbx、 rby,对应的是hmi控件坐标系下的值,调整后的值将直接替换调整前的值。
hittype:指定击中区域编号,表示指令要调整的矩形对应部分,为-1时表示无效编号,不对矩形做调整;为有效编号时则调整矩形对应的部分。按下鼠标左键则返回当前选中的击中区域编号,按住鼠标左键不放再移动鼠标表示在不断地在调整指定编号所对应的矩形部分,此时返回的击中区域编号与输入的编号一致。
hittype:根据鼠标点击位置计算的新的击中区域编号
MOUSE_STATE (num)
num:触摸对应的位置的 X,Y 坐标分别存储在 table(num), table(num+1)
HMI_CONTROLSIZEX ([winid, controlid])
winid:HMI文件里面窗口编号
controlid:元件编号,缺省为当前自定义元件宽度
HMI_CONTROLSIZEX ([winid, controlid])
winid:HMI文件里面窗口编号
controlid:元件编号,缺省为当前自定义元件高度
ZV_POSTOIMG(latch_id,num,tab_in_id,tab_out_id)
latch_id:锁存通道号
num:坐标点数量
tab_in_id:存放转换前坐标点的TABLE索引,num个坐标点数据依次为x、y、x、y......
tab_out_id:存放转换后坐标点的TABLE索引
DRAWRECT(x1,y1,x2,y2)
x1,y1:显示区域左上角的坐标位置
x2,y2:显示区域右下角的坐标位置
1.打开ZDevelop软件:新建名称为“创建ROI.zpj”项目→新建“HMI”文件→新建“main.bas”文件(用于编写界面响应函数、并开启HMI自动运行任务)→新建“相机采集.bas”文件(用于实现相机采集功能)→新建“初始化.bas”文件(用于初始化测量参数)→文件添加到项目。
2.设计HMI主界面和关联它的控件变量。
3.编写实现对图像进行ROI创建的执行函数。
'ROI创建的执行函数
GLOBAL SUB update_roi()
local is_redraw,lv_i
SET_REDRAW '全局绘制
if ROI_flag=1 THEN
if mouse_scan(11) = 1 then '扫描鼠标按下操作
hit_pos = ZV_HMIADJRECT(table(11), table(12), 25, -1) '获取调整区域标志
is_redraw = 1 '将绘图标志置1
endif
if mouse_scan(11) = -1 then '扫描鼠标松开操作
ZV_HMIADJRECT(table(11), table(12), 25, hit_pos) '调整ROI的位置
is_redraw = 1 '将绘图标志置1
endif
if (MOUSE_state(11)) then
ZV_HMIADJRECT(table(11), table(12), 25, hit_pos) '调整ROI的位置
is_redraw = 1 '将绘图标志置1
endif
if (TABLE(25) >= 0) AND (TABLE(27) <= and="">= 0) AND (TABLE(28) <= HMI_CONTROLSIZEY(10,2)) THEN
TABLE(30) = TABLE(25) ' CX
TABLE(31) = TABLE(26) ' CY
TABLE(32) = TABLE(27) ' Width
TABLE(33) = TABLE(28) ' Height
ELSEIF (TABLE(25) < 0) OR (table(27) > HMI_CONTROLSIZEX(10,2)) OR (table(26) < 0) OR (table(28) > HMI_CONTROLSIZEY(10,2)) THEN
TABLE(25) = TABLE(30)
TABLE(26) = TABLE(31)
TABLE(27) = TABLE(32)
TABLE(28) = TABLE(33)
endif
if (1 = is_redraw) then
is_redraw = 0 '将绘图标志置0
ZV_POSTOIMG(0, 2, 25, 15)'将ROI的控件坐标数据转到图像坐标数据
d_roi_rect(0) = TABLE(15)'将ROI的图像坐标数据赋值给定义的变量
d_roi_rect(1) = TABLE(16)
d_roi_rect(2) = table(17)
d_roi_rect(3) = table(18)
SET_REDRAW '全局绘制
endif
endif
ENDSUB
'ROI区域更新后实时绘制ROI区域
GLOBAL SUB draw_roi()
if ROI_flag= 1 THEN
SET_COLOR(rgb(0,255,0)) '设置绘制时画笔的颜色为绿色
'绘制矩形
DRAWRECT(table(25),table(26),table(27),table(28))
'绘制十字标
DRAWLINE((table(25)+table(27))/2-5,(table(28)+table(26))/2,(table(25)+table(27))/2+5,(table(28)+table(26))/2)
DRAWLINE((table(25)+table(27))/2,(table(28)+table(26))/2-5,(table(25)+table(27))/2,(table(28)+table(26))/2+5)
endif
END SUB
4.效果演示视频可点击→对图像进行ROI创建操作演示部分查看。
正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位等等。
本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟对图像进行ROI创建,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-893 6 。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。