变量名 | 类 型 | 静态 | 数组 | 备 注 |
输入 | 多维矩阵类 | | |
灰度化 | 多维矩阵类 | | |
阈值 | 多维矩阵类 | | |
轮廓 | 多维数组点2i类 | | |
最小距离1 | 双精度小数型 | | |
最小距离2 | 双精度小数型 | | |
最小点0 | 点2i类 | | |
最小点1 | 点2i类 | | |
i | 整数型 | | |
点 | 点2i类 | | |
最小_点1 | 点2i类 | | |
最小_点2 | 点2i类 | | |
j | 整数型 | | |
点2 | 点2i类 | | |
距离 | 双精度小数型 | | |
绘制图 | 多维矩阵类 | | |
输入 =
视觉_图像解码 ( #图片1, 1
)视觉_颜色空间转换 (输入, 灰度化,
#颜色_BGR转GRAY, 0
)视觉_高斯滤波 (灰度化, 灰度化,
尺寸2i (3, 3
), 0, 0, 4
)视觉_阈值 (灰度化, 阈值, 150, 255,
#阈值_二进制 )视觉_查找轮廓 (阈值, 轮廓, ,
#检测_外部, #逼近_任何, )最小距离1 = 10000
计次循环首 (轮廓.
元素尺寸 (2
), i
)
点 =
点2i (轮廓.
取点2i类 (2, i
).左边, 轮廓.
取点2i类 (2, i
).顶边
)
最小距离2 = 10000

最小_点1 =
点2i (0, 0
)
最小_点2 =
点2i (0, 0
)
计次循环首 (轮廓.
元素尺寸 (1
), j
)

点2 =
点2i (轮廓.
取点2i类 (1, j
).左边, 轮廓.
取点2i类 (1, j
).顶边
)

距离 =
视觉_点到点 (点2.左边, 点2.顶边, 点.左边, 点.顶边
)

如果真 (距离 < 最小距离2
)


最小距离2 = 距离



最小_点1 = 点2



最小_点2 = 点




计次循环尾 ()
如果真 (最小距离2 < 最小距离1
)

最小距离1 = 最小距离2


最小点0 = 最小_点2


最小点1 = 最小_点1
绘制图 = 输入.克隆 ()
视觉_线 (绘制图, 点, 最小_点1,
标量 (0, 255, 0
), 2,
#线类型_线_AA, 0
)
视觉_圆 (绘制图, 点, 5,
标量 (255, 0, 255
), -1,
#线类型_线_AA, 0
)
视觉_圆 (绘制图, 最小_点1, 5,
标量 (0, 255, 255
), -1,
#线类型_线_AA, 0
)
视觉_显示图像 (“小白鼠”, 绘制图
)
如果真 (视觉_等待按键 (1
) = 27
) 
跳出循环 ()

计次循环尾 ()视觉_线 (输入, 最小点0, 最小点1,
标量 (0, 255, 0
), 2,
#线类型_线_AA, 0
)视觉_圆 (输入, 最小点0, 3,
标量 (255, 0, 255
), -1,
#线类型_线_AA, 0
)视觉_圆 (输入, 最小点1, 3,
标量 (0, 255, 255
), -1,
#线类型_线_AA, 0
)视觉_放置文本ZH (输入,
“最小距离:” +
到文本 (最小距离1
),
点2i (最小点1.左边, 最小点1.顶边 + 15
),
标量 (0, 255, 0
), 40,
“微软雅黑”, 假,
假)视觉_显示图像 (“小白鼠”, 输入
) 视觉_等待按键 (0
)返回 (0
)