|

本帖最后由 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 )
|
|