VPLC系列机器视觉运动控制一体机快速入门(六)( 二 )


C_BLUE=RGB(0,0,255)
C_YELLOW=RGB(255,255,0)
'标定矩阵
GLOBALZVOBJECTca_mat
'***********结束定义坐标标定相关变量******************
4.在InitLocator.bas文件中初始化坐标标定相关的测量参数 。
'初始化坐标标定相关的变量
d_ca_param(0)=0'标定类型
d_ca_param(1)=120'对比度
d_ca_param(2)=0'极性
d_ca_param(3)=80'最小面积
d_ca_param(4)=20000'最大面积
d_ca_param(5)=9'世界坐标点间距
ca_min_err=0'最小误差
ca_max_err=0'最大误差
ca_avg_err=0'平均误差
5.新建主界面按下【坐标标定】按钮时弹出的窗口界面calib , 并设计界面布局 。

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
6.在calib窗口界面中关联元件变量 。

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
7.添加在主界面按下【坐标标定】按钮时响应的函数 , 并关联动作函数名 。
'点击主界面坐标标定按钮时响应的函数
GLOBALSUBbtn_calib()
ZV_LATCHSETSIZE(0,HMI_CONTROLSIZEX(13,91),HMI_CONTROLSIZEY(13,91))'设置坐标标定窗口锁存通道0的锁存大小
ZV_LATCHCLEAR(0)'将锁存通道0清空
ZV_LATCH(grabImg,0)'显示采集图像显示到锁存通道0中
HMI_SHOWWINDOW(13)
ENDSUB

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
8.添加在calib界面按下【提取mark点】按钮时响应的函数 , 并关联动作函数名 。
'坐标标定界面按下提取mark点按钮时响应的函数
GLOBALSUBbtn_ca_extract()
ZVOBJECTinppts,ppts,wpts
'提取像素坐标
ZV_CALGETSCAPTS(grabImg,inppts,d_ca_param(1),d_ca_param(2),d_ca_param(3),d_ca_param(4))
ZV_MATINFO(inppts,400)
DIMrow,col
row=TABLE(400)
col=TABLE(401)
if(row*col=18)then
TABLE(150)=1'提取mark点成功
else
TABLE(150)=0'提取mark点失败
return
endif
'根据mrak点间距和像素坐标计算世界坐标
ZV_CALGETPTSMAP(inppts,ppts,wpts,d_ca_param(5))
ZV_MATINFO(ppts,400)
row=TABLE(400)
col=TABLE(401)
if(row*col=18)then
TABLE(150)=1'提取mark点成功
else
TABLE(150)=0'提取mark点失败
return
endif
'像素坐标和世界坐标放入table中
DIMi
FORi=0TOrow-1
ZV_MATGETROW(ppts,i,col,81+i*col)
ZV_MATGETROW(wpts,i,col,131+i*col)
NEXT
'设置用于绘制mark点的图像
ZVOBJECTcolor
ZV_GRAYTORGB(grabImg,color)
'和绘制mark点的十字架
DIMj,pixNum'像素个数
pixNum=0
FORi=0TO2
FORj=0TO2
ZV_MARKER(color,TABLE(81+2*pixNum),TABLE(81+2*pixNum+1),0,40,C_GREEN)
pixNum=pixNum+1
NEXT
NEXT
'用文本绘制mark点的序号
FORi=0TO8
ZV_TEXT(color,TOSTR(i,1,0),TABLE(81+2*i)-20,TABLE(81+2*i+1)-40,20,C_BLUE)
NEXT
ZV_LATCH(color,0)
endsub
在calib界面按下【提取mark点】按钮时仿真效果图 。

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
9.添加在calib界面按下【标定】按钮时响应的函数 , 并关联动作函数名 。
'坐标标定界面按下标定按钮时响应的函数
globalsubbtn_ca_calib()
ZV_IMGINFO(grabImg,0)
ZV_CALCAM(ppts,wpts,ca_param,TABLE(0),TABLE(1),d_ca_param(0))
is_ca_success=1
'计算标定误差
ZV_CALERROR(ca_param,ppts,wpts,0)
ca_min_err=TABLE(1)
ca_max_err=TABLE(2)
ca_avg_err=TABLE(0)
endsub

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
在calib界面按下【标定】按钮时仿真效果图
10.添加在calib界面按下【返回】按钮时响应的函数 , 并关联动作函数名 。
'坐标标定界面按下返回按钮时响应的函数
globalsubbtn_ca_param_rtn()
HMI_CLOSEWINDOW(13)
endsub

VPLC系列机器视觉运动控制一体机快速入门(六)
文章图片
11.修改匹配测试子函数中匹配结果输出部分的指令代码 。
if(is_ca_success=1ANDTABLE(300))then
ZV_GETRIGIDVECTOR(mat_rigid1,0,0,0,TABLE(4),TABLE(5),TABLE(6))'计算刚性变换矩阵
ZV_CONTAFFINE(contlist1,mat_rigid1,tsContlist1)'对轮廓或轮廓序列进行仿射变换
ZV_CONTLIST(colorImg,tsContlist1,ZV_COLOR(0,255,0),0)'在colorSubImg图像上绘制绿色的轮廓序列
ZV_CALTRANSW(ca_param,TABLE(4),TABLE(5),4)
d_match_rst(0)=TABLE(3)
d_match_rst(1)=TABLE(4)
d_match_rst(2)=TABLE(5)
d_match_rst(3)=TABLE(6)
d_match_rst(4)=TABLE(7)
else
d_match_rst(0)=TABLE(3)
d_match_rst(1)=TABLE(4)
d_match_rst(2)=TABLE(5)
d_match_rst(3)=TABLE(6)
d_match_rst(4)=TABLE(7)
ZV_GETRIGIDVECTOR(mat_rigid1,0,0,0,TABLE(4),TABLE(5),TABLE(6))'计算刚性变换矩阵
ZV_CONTAFFINE(contlist1,mat_rigid1,tsContlist1)'对轮廓或轮廓序列进行仿射变换