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


'计算直线2的中点位置坐标
dis_tmp=(d_meas_rst2(0)+d_meas_rst2(2))/2
dst_tmp1=(d_meas_rst2(1)+d_meas_rst2(3))/2
'计算直线2的中点到直线1之间的距离
dist2=ZV_DISTPL(dis_tmp,dst_tmp1,d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))
TABLE(500)=(dist+dist1+dist2)/3'两直线之间的距离
PixLength=TABLE(500)
?TABLE(500)
endsub
'计算实际尺寸值
globalsublength2()
'实际尺寸=像素尺寸*像素比例
TABLE(501)=TABLE(500)*CalibParam
endsub
'计算像素比例 , 即实际值/像素值
globalsubcalculation()
CalibParam=WorldLength/TABLE(500)
endsub
15.在main.bas文件中添加“Set_Select”窗口界面按下【测试】按钮时响应的函数并关联动作函数名 。
'测量设置界面按下测试按钮时响应的函数
GLOBALSUBbtn_mea_test()
'选择补正源时先执行定位检测
if(TABLE(110)=1)then
btn_loc_test()
endif
ZVOBJECTmr1,mr2,mr3,mr4,rst1,rst2,rst3,rst4,colorImg
ZVOBJECTcontlist,tsContlist,mat_rigid
LOCALshow_rst
'测量区域roi补正
if(TABLE(110)=1ANDd_is_creModel=1)then'如果使用补正源已经开启且模板已经创建
'计算刚性变换矩阵
ZV_GETRIGIDVECTOR(mat_rigid,d_match_base_rst(1),d_match_base_rst(2),d_match_base_rst(3),d_match_rst(1),d_match_rst(2),d_match_rst(3))
'使用变换矩阵mat_rigid对输入Roi1基准向量进行补正 , 补正后的向量存入开始索引为0的TABLE中
ZV_VECTORCORRECT(mat_rigid,d_meas_base_v1(0),d_meas_base_v1(1),d_meas_base_v1(2),0)
d_meas_param1(0)=TABLE(0)
d_meas_param1(1)=TABLE(1)
d_meas_param1(4)=TABLE(2)
'使用变换矩阵mat_rigid对输入Roi2基准向量进行补正 , 补正后的向量存入开始索引为0的TABLE中
ZV_VECTORCORRECT(mat_rigid,d_meas_base_v2(0),d_meas_base_v2(1),d_meas_base_v2(2),0)
d_meas_param2(0)=TABLE(0)
d_meas_param2(1)=TABLE(1)
d_meas_param2(4)=TABLE(2)
endif
'测量区域1
'生成直线1测量的旋转区域
ZV_MRGENLINE(mr1,d_meas_param1(0),d_meas_param1(1),d_meas_param1(2),d_meas_param1(3),d_meas_param1(4),1,d_meas_param1(6),d_meas_param1(7))
'设置直线1的检测参数 , 包括滤波器尺寸 , 阈值 , 边缘极性 , 边缘位置
ZV_MRSETADV(mr1,d_meas_param1(8),d_meas_param1(9),d_meas_param1(10),d_meas_param1(11))
'测量区域2
'生成直线2测量的旋转区域
ZV_MRGENLINE(mr2,d_meas_param2(0),d_meas_param2(1),d_meas_param2(2),d_meas_param2(3),d_meas_param2(4),1,d_meas_param2(6),d_meas_param2(7))
'设置直线2的检测参数 , 包括滤波器尺寸 , 阈值 , 边缘极性 , 边缘位置
ZV_MRSETADV(mr2,d_meas_param2(8),d_meas_param2(9),d_meas_param2(10),d_meas_param2(11))
'将矩形测量区域测量到的目标直线1端点存储到起始索引为61的TABLE
ZV_MRLINE(mr1,grabImg,rst1,61)
d_meas_rst1(0)=TABLE(61)
d_meas_rst1(1)=TABLE(62)
d_meas_rst1(2)=TABLE(63)
d_meas_rst1(3)=TABLE(64)
'将矩形测量区域测量到的目标直线2端点存储到起始索引为71的TABLE
ZV_MRLINE(mr2,grabImg,rst2,71)
ZV_MATINFO(rst2,0)'table(0)作为临时变量
d_meas_rst2(0)=TABLE(71)
d_meas_rst2(1)=TABLE(72)
d_meas_rst2(2)=TABLE(73)
d_meas_rst2(3)=TABLE(74)
'计算两条直线的距离宽度
length1()
d_show_rst=TABLE(500)
if(CalibParam>0)then
'计算实际长度
length2()
d_show_rst=TABLE(501)
endif
'绘制结果线
ZV_GRAYTORGB(grabImg,colorImg)
ZV_LINE(colorImg,TABLE(61),TABLE(62),TABLE(63),TABLE(64),C_GREEN)
ZV_LINE(colorImg,TABLE(65),TABLE(66),TABLE(67),TABLE(68),C_GREEN)
ZV_LINE(colorImg,TABLE(71),TABLE(72),TABLE(73),TABLE(74),C_GREEN)
ZV_LINE(colorImg,TABLE(75),TABLE(76),TABLE(77),TABLE(78),C_GREEN)
ZV_LATCH(colorImg,0)
ENDSUB
↓

VPLC系列机器视觉运动控制一体机快速入门(五)
文章图片
在main.bas文件中添加“Set_Select”窗口界面按下【测试】按钮时仿真的效果图 。

VPLC系列机器视觉运动控制一体机快速入门(五)
文章图片
测试按钮效果图
16.设置“Set_Select”窗口界面【计算】按钮关联动作函数名 。

VPLC系列机器视觉运动控制一体机快速入门(五)
文章图片
在“Set_Select”窗口界面按下【计算】按钮时仿真的效果图 。

VPLC系列机器视觉运动控制一体机快速入门(五)
文章图片
计算按钮效果图
17.在“Set_Select”窗口界面中关联界面控件变量 。

VPLC系列机器视觉运动控制一体机快速入门(五)
文章图片
18.在main.bas文件中添加“Set_Select”窗口界面按下【返回主界面】按钮时响应的函数并关联动作函数名 。
'按下返回主界面按钮时响应的函数