|
本帖最后由 z13228604287 于 2022-11-18 19:19 编辑
变量名 | 类 型 | 静态 | 数组 | 备 注 | 输入图像 | 多维矩阵类 | | | 内侧 | 多维矩阵类 | | | 标定板图坐标 | 点2f类 | | 0 | 机械臂坐标 | 点2f类 | | 9 | 映射矩阵 | 多维矩阵类 | | | A | 双精度小数型 | | | B | 双精度小数型 | | | C | 双精度小数型 | | | D | 双精度小数型 | | | E | 双精度小数型 | | | F | 双精度小数型 | | | i | 整数型 | | | 计算机械坐标 | 点2f类 | | | 视觉_创建窗口 (“小白鼠”, #窗口_标准 ) 输入图像 = 视觉_图像解码 ( #标定板图1, #读图_彩色 )如果真 (输入图像. 空 ()) 视觉_控制台输出 (“请先加载图片!”, )视觉_控制台命令 (“pause”)返回 (-1 ) 获取标定板坐标 (输入图像, 标定板图坐标, 20, 300 )如果真 (取数组成员数 (标定板图坐标 ) = 0 )视觉_控制台输出 (“图像点位检测失败!”, )视觉_控制台命令 (“pause”)返回 (-1 )
机械臂坐标 [1 ]. 初始化 (1007, 729 )机械臂坐标 [2 ]. 初始化 (1301, 729 )机械臂坐标 [3 ]. 初始化 (1595, 729 )机械臂坐标 [4 ]. 初始化 (1007, 1023 )机械臂坐标 [5 ]. 初始化 (1301, 1022 )机械臂坐标 [6 ]. 初始化 (1596, 1022 )机械臂坐标 [7 ]. 初始化 (1006, 1317 )机械臂坐标 [8 ]. 初始化 (1301, 1317 )机械臂坐标 [9 ]. 初始化 (1596, 1316 ) 映射矩阵 = 视觉_计算仿射变换2D (标定板图坐标, 机械臂坐标, 内侧, 8, 3, 2000, 0.99, 10 )视觉_控制台输出 (“内侧:\n%mat\n”, 内侧 )如果真 (映射矩阵. 空 () = 假) A = 映射矩阵. 取元素 (0, 0 )B = 映射矩阵. 取元素 (0, 1 )C = 映射矩阵. 取元素 (0, 2 )D = 映射矩阵. 取元素 (1, 0 )E = 映射矩阵. 取元素 (1, 1 )F = 映射矩阵. 取元素 (1, 2 )视觉_控制台输出 (“\n参: A:%D B:%D\nC:%D D:%D\nE:%D F:%D\n\n”, A, B, C, D, E, F ) 计次循环首 (取数组成员数 (标定板图坐标 ), i )计算机械坐标.左边 = A × 标定板图坐标 [i ].左边 + B × 标定板图坐标 [i ].顶边 + C 计算机械坐标.顶边 = D × 标定板图坐标 [i ].左边 + E × 标定板图坐标 [i ].顶边 + F 视觉_控制台输出 (“返回的机械臂坐标: %point2f\n”, 计算机械坐标 )计次循环尾 ()视觉_显示图像 (“小白鼠”, 输入图像 )视觉_等待按键 (0 )返回 (0 ) |
获取标定板坐标 | | | |
标定板图 | 多维矩阵类 | | | | 标定板图坐标 | 点2f类 | | | | 最小半径 | 双精度小数型 | | | | 最大半径 | 双精度小数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 灰度图 | 多维矩阵类 | | | 二值化 | 多维矩阵类 | | | 轮廓集 | 点2i二维数组类 | | | i | 整数型 | | | 矩形 | 矩形2i类 | | | 面积 | 双精度小数型 | | | 圆心 | 点2f类 | | | 半径 | 小数型 | | | 轮廓 | 整数型 | | | 计数 | 整数型 | | | 视觉_颜色空间转换 (标定板图, 灰度图, #颜色_BGR转GRAY, 0 )视觉_高斯滤波 (灰度图, 灰度图, 尺寸2i (3, 3 ), 0, 0, 4 )视觉_阈值 (灰度图, 二值化, 0, 255, 位或 ( #阈值_二进制, #阈值_大津 )) 视觉_查找轮廓 (二值化, 轮廓集, , #检测_树, #逼近_连续, ) 计次循环首 (轮廓集. 尺寸 (), i )矩形 = 视觉_最大轮廓矩形V (轮廓集, i ) 面积 = 视觉_轮廓面积V (轮廓集, i, 假)视觉_最小包围圆形V (轮廓集, i, 圆心, 半径 )如果真 (矩形.宽度 > 最小半径 × 2 且 矩形.宽度 > 最小半径 × 2 且 矩形.宽度 < 最大半径 × 2 且 矩形.宽度 < 最大半径 × 2 且 矩形.宽度 × 1 ÷ 矩形.宽度 ≥ 0.8 且 矩形.宽度 × 1 ÷ 矩形.宽度 ≤ 1.2 且 面积 ÷ (3.1415926 × 半径 × 半径 ) > 0.9 )视觉_圆f (标定板图, 圆心, 半径, 标量 (0, 255, 0 ), 5, 8, 0 )视觉_圆f (标定板图, 圆心, 3, 标量 (0, 255, 255 ), -1, 8, 0 )加入成员 (标定板图坐标, 圆心 )计次循环尾 ()点位排序 (标定板图坐标, 1, 取数组成员数 (标定板图坐标 )) 计次循环首 (取数组成员数 (标定板图坐标 ), i )视觉_放置文本f (标定板图, “C” + 到文本 (i ), 标定板图坐标 [i ], 0, 3.5, 标量 (255, 0, 255 ), 6, 8, 假)计次循环尾 ()|
点位排序 | | | |
标定板图坐标 | 点2f类 | | | | 起始 | 整数型 | | | | 数组长度 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | j | 整数型 | | | tmp | 点2f类 | | |
i = 起始 j = 数组长度 tmp = 标定板图坐标 [起始 ]判断循环首 (i < j )判断循环首 (i < j 且 位置换算 (标定板图坐标 [j ]) ≥ 位置换算 (tmp )) j = j - 1 判断循环尾 ()标定板图坐标 [i ] = 标定板图坐标 [j ]判断循环首 (i < j 且 位置换算 (标定板图坐标 [i ]) ≤ 位置换算 (tmp )) i = i + 1 判断循环尾 ()标定板图坐标 [j ] = 标定板图坐标 [i ]判断循环尾 ()标定板图坐标 [i ] = tmp 如果真 (起始 < i - 1 )点位排序 (标定板图坐标, 起始, i - 1 )如果真 (i + 1 < 数组长度 )点位排序 (标定板图坐标, i + 1, 数组长度 )返回 (点位.左边 + 点位.顶边 × 3 )
|
|