|
如果有热度就分享源代码
结合halcon19版本开发
如果真 (打开所有相机 = 10 )延时 (10 )hal. 复制图像 (相机1图片, Image )图像预处理1 ()
左边结果 = hal. 单模型寻找不同形状 (Image, 模板句柄, 0, 360, 0.9, 1.1, 0.9, 1.1, 到小数 (编辑框12.内容 ), 1, 0.5, “least_squares”, 到整数 (编辑框11.内容 ), 0.9, 返回Y, 返回X, 返回角度, , , 返回分数 ) 如果 (hal. 弧度到角度 (返回角度 ). 取元组小数 () > 90 )角度转换 = hal. 弧度到角度 (返回角度 ). 取元组小数 () - 360 角度转换 = hal. 弧度到角度 (返回角度 ). 取元组小数 ()如果真 (左边结果 = 0 ) hal. 创建矩形 (临时矩形, 返回Y, 返回X, 返回角度, 400, 400 )编辑框4.内容 = 到文本 (角度转换 )编辑框5.内容 = 到文本 (返回X. 取元组小数 ()) 编辑框6.内容 = 到文本 (返回Y. 取元组小数 ()) 编辑框7.内容 = 到文本 (到数值 (编辑框5.内容 ) - 到数值 (编辑框500.内容 )) 编辑框8.内容 = 到文本 (到数值 (编辑框6.内容 ) - 到数值 (编辑框600.内容 )) 编辑框902.内容 = 到文本 (到数值 (编辑框4.内容 ) - 到数值 (编辑框900.内容 )) 编辑框602.内容 = 编辑框8.内容 编辑框502.内容 = 编辑框7.内容 如果真 (返回Y. 取元组小数 () ≠ 0 或 返回X. 取元组小数 () ≠ 0 )延时 (10 )线程ID1 = 线程_启动 (&找交点 )临时矩形.显示 (窗口ID)
如果真 (左边结果 ≠ 2 ) hal. 复制图像 (Image, Image2 )hal. 取图像的尺寸 (Image2, Image高, Image宽 )hal. 显示图像局部 (WindowHandle, 0, 0, Image宽, Image高 )hal. RGB1转灰度 (Image2, Image2 ) hal. 设置颜色 (WindowHandle, “red”)hal. 显示图像对象 (Image2, WindowHandle )hal. 取图像的尺寸 (Image2, Image高, Image宽 )hal. 设置线宽 (WindowHandle, 2 )Row1 = hal. 取整数 (到小数 (编辑框17.内容 ) + 到小数 (编辑框8.内容 )) Column1 = hal. 取整数 (到小数 (编辑框18.内容 ) + 到小数 (编辑框7.内容 )) Row2 = hal. 取整数 (到小数 (编辑框19.内容 ) + 到小数 (编辑框8.内容 )) Column2 = hal. 取整数 (到小数 (编辑框20.内容 ) + 到小数 (编辑框7.内容 )) hal. 赋值 (Line, hal. 创建元组 (Row1, Column1, Row2, Column2 )) hal. 创建计量模型 (MetrologyHandle )hal. 设置计量模型图像大小 (MetrologyHandle, Image高, Image宽 )hal. 添加计量对象通用 (MetrologyHandle, “line”, Line, 20, 5, 1, 15, hal. 创建元组 (), hal. 创建元组 (), Index )hal. 应用计量模型 (Image2, MetrologyHandle )hal. 取计量对象测量 (Contours, MetrologyHandle, “all”, “all”, Row, Column )hal. 创建十字XLD轮廓 (Cross, Row, Column, 1, 0.785398 )hal. 取计量对象结果 (MetrologyHandle, “all”, “all”, “result_type”, “all_param”, Parameter )hal. 取计量对象模型轮廓 (Contour, MetrologyHandle, “all”, 1.5 )hal. 清除计量模型 (MetrologyHandle ) hal. 创建多边形XLD轮廓 (Contour5, Row, Column )hal. XLD轮廓拟合直线 (Contour5, “tukey”, -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1 ) hal. 线位置 (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowCenter, ColCenter, Length, Phi ) hal. 赋值 (radian, Phi )hal. 赋值 (degree, hal. 除 (hal. 乘 (radian, 180 ), 3.1415926 )) 编辑框2302.内容 = 到文本 (degree. 取元组小数 ()) hal. XLD轮廓拟合直线 (Contour5, “tukey”, -1, 0, 5, 2, Row11, Column11, Row22, Column22, Nr1, Nc1, Dist1 ) 判断 (hal. 等于 (hal. 减 (Row22, Row11 ), 0 )) hal. 赋值 (k, 0 )hal. 创建多边形XLD轮廓 (Contour, hal. 创建元组 (Row22, Row22 ), hal. 创建元组 (0, Image高 )) k = hal. 取整数 ( (Column22. 取元组小数 () - Column11. 取元组小数 ()) ÷ (Row22. 取元组小数 () - Row11. 取元组小数 ()) )hal. 赋值 (b, hal. 减 (Column22, hal. 乘 (k, Row22 )) )hal. 赋值 (Row1, 0 )hal. 赋值 (Row2, hal. 减 (Image宽, 1 )) hal. 赋值 (col1, hal. 加 (hal. 乘 (k, Row1 ), b )) hal. 赋值 (col2, hal. 加 (hal. 乘 (k, Row2 ), b )) hal. 创建多边形XLD轮廓 (Contour, hal. 创建元组 (Row1, Row2 ), hal. 创建元组 (col1, col2 )) hal. 显示图像对象 (Contour, 窗口ID ) Row111 = hal. 取整数 (到小数 (编辑框21.内容 ) + 到小数 (编辑框8.内容 )) Column111 = hal. 取整数 (到小数 (编辑框22.内容 ) + 到小数 (编辑框7.内容 )) Row222 = hal. 取整数 (到小数 (编辑框23.内容 ) + 到小数 (编辑框8.内容 )) Column222 = hal. 取整数 (到小数 (编辑框24.内容 ) + 到小数 (编辑框7.内容 )) hal. 赋值 (Line, hal. 创建元组 (Row111, Column111, Row222, Column222 )) hal. 创建计量模型 (MetrologyHandle1 )hal. 设置计量模型图像大小 (MetrologyHandle1, Image高, Image宽 )hal. 添加计量对象通用 (MetrologyHandle1, “line”, Line, 20, 5, 1, 15, hal. 创建元组 (), hal. 创建元组 (), Index )hal. 设置颜色 (WindowHandle, “red”)hal. 应用计量模型 (Image2, MetrologyHandle1 ) hal. 取计量对象测量 (Contours1, MetrologyHandle1, “all”, “all”, Row3, Column3 ) hal. 创建十字XLD轮廓 (Cross1, Row3, Column3, 1, 0.785398 )hal. 取计量对象结果 (MetrologyHandle1, “all”, “all”, “result_type”, “all_param”, Parameter ) hal. 取计量对象模型轮廓 (Contour1, MetrologyHandle1, “all”, 1.5 )hal. 清除计量模型 (MetrologyHandle1 ) hal. 创建多边形XLD轮廓 (Contour2, Row3, Column3 )hal. XLD轮廓拟合直线 (Contour2, “tukey”, -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist ) hal. 线位置 (RowBegin, ColBegin, RowEnd, ColEnd, RowCenter1, ColCenter1, Length1, Phi1 ) hal. 赋值 (radian1, Phi1 )hal. 赋值 (degree1, hal. 除 (hal. 乘 (radian1, 180 ), 3.1415926 )) 编辑框2303.内容 = 到文本 (degree1. 取元组小数 ()) hal. XLD轮廓拟合直线 (Contour2, “tukey”, -1, 0, 5, 2, Row11, Column11, Row22, Column22, Nr1, Nc1, Dist1 ) 判断 (hal. 等于 (hal. 减 (Row22, Row11 ), 0 )) hal. 赋值 (k, 0 )hal. 创建多边形XLD轮廓 (Contour1, hal. 创建元组 (Row22, Row22 ), hal. 创建元组 (0, Image高 )) k = hal. 取整数 ( (Column22. 取元组小数 () - Column11. 取元组小数 ()) ÷ (Row22. 取元组小数 () - Row11. 取元组小数 ()) )hal. 赋值 (b, hal. 减 (Column22, hal. 乘 (k, Row22 )) )hal. 赋值 (Row1, 0 )hal. 赋值 (Row2, hal. 减 (Image宽, 1 )) hal. 赋值 (col1, hal. 加 (hal. 乘 (k, Row1 ), b )) hal. 赋值 (col2, hal. 加 (hal. 乘 (k, Row2 ), b )) hal. 创建多边形XLD轮廓 (Contour1, hal. 创建元组 (Row1, Row2 ), hal. 创建元组 (col1, col2 )) hal. 显示图像对象 (Contour1, 窗口ID )hal. 求线段交点 (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowBegin, ColBegin, RowEnd, ColEnd, Row6, Column4, IsOverlapping )hal. 创建十字XLD轮廓 (Cross2, Row6, Column4, 200, 0.785398 )找到交点 = hal. 显示图像对象 (Cross2, 窗口ID )编辑框42.内容 = 到文本 (找到交点 )取交点原点Y = 到数值 (Row6. 取元组小数 ()) 取交点原点X = 到数值 (Column4. 取元组小数 ()) 编辑框2300.内容 = 到文本 (到数值 (Row6. 取元组小数 ()) - 到数值 (编辑框800.内容 )) 编辑框2301.内容 = 到文本 (到数值 (Column4. 取元组小数 ()) - 到数值 (编辑框801.内容 )) 编辑框2506.内容 = 编辑框2300.内容 编辑框2507.内容 = 编辑框2301.内容 hal. 保存窗口到文件 (窗口ID, “png”, 取运行目录 () + “\测试完成图片\” + 到文本 (取现行时间 ()) + “_” + 编辑框10.内容 + “_左”)如果 (编辑框2300.内容 ≠ “” 且 编辑框2301.内容 ≠ “”)如果真 (按钮25.标题 = “标定开启”)延时 (10 )线程_启动 (&标定A )如果真 (到整数 (编辑框2302.内容 ) = 0 且 到整数 (编辑框2303.内容 ) = 0 )标签6.文本颜色 = #红色 标签6.标题 = “NG”编辑框3. 加入文本 (到文本 (取现行时间 ()) + “:左交点未生成,左计算NG” + #换行符 )编辑框20006.内容 = “2”
|
|