|

如果有热度就分享源代码
结合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”
|
|