|
效果图:
. . 图片 = 视觉_图像解码 ( #图片1, #读图_彩色 )瓶口_霍夫 (图片 )视觉_显示图像 (“小白鼠”, 图片 )视觉_等待按键 (0 )视觉_销毁所有窗口 ()返回 (0 ) 变量名 | 类 型 | 静态 | 数组 | 备 注 | HSV_下 | 标量类 | | | HSV_上 | 标量类 | | | HSV_图 | 多维矩阵类 | | | 蒙版 | 多维矩阵类 | | | 轮廓集 | 点2i二维数组类 | | | i | 整数型 | | | 最大外接矩形 | 矩形2i类 | | | 最大外接矩形2 | 矩形2i类 | | | 中心 | 点2f类 | | | 半径 | 小数型 | | | 感兴区域 | 多维矩阵类 | | | 阈值_中心 | 点2f类 | | | 极坐标变换 | 多维矩阵类 | | | 灰度 | 多维矩阵类 | | | 均值 | 多维矩阵类 | | | 绝对差异 | 多维矩阵类 | | | 阈值 | 多维矩阵类 | | | 轮廓2 | 点2i二维数组类 | | | 极坐标变换_反 | 多维矩阵类 | | |
HSV_下. 初始化 (0, 0, 0, )HSV_上. 初始化 (180, 255, 45, )视觉_颜色空间转换 (输入图, HSV_图, #颜色_BGR转HSV, 0 )视觉_在范围内 (HSV_图, HSV_下, HSV_上, 蒙版 )视觉_中值滤波 (蒙版, 蒙版, 3 ) 视觉_查找轮廓 (蒙版, 轮廓集, , #检测_外部, #逼近_任何, )计次循环首 (轮廓集. 尺寸 (), i )最大外接矩形 = 视觉_最大轮廓矩形V (轮廓集, i )如果真 (最大外接矩形.宽度 > 150 且 最大外接矩形.高度 > 150 )视觉_最小包围圆形V (轮廓集, i, 中心, 半径 )跳出循环 ()计次循环尾 ()输入图. 感兴区域 (最大外接矩形 ). 复制 (感兴区域, ) 阈值_中心. 初始化 (中心.左边 - 最大外接矩形.左边, 中心.顶边 - 最大外接矩形.顶边 )视觉_极坐标变换 (感兴区域, 极坐标变换, 尺寸2i (300, 600 ), 阈值_中心, 半径, #插值_双线性二次 + #变换_极坐标 ) 视觉_颜色空间转换 (极坐标变换, 灰度, #颜色_BGR转GRAY, 0 ) 视觉_均值滤波 (灰度, 均值, 尺寸2i (3, 501 ), , 4 ) 视觉_绝对差异 (灰度, 均值, 绝对差异 ) 视觉_阈值 (绝对差异, 阈值, 55, 255, #阈值_二进制 )视觉_中值滤波 (阈值, 阈值, 3 )视觉_查找轮廓 (阈值, 轮廓2, , #检测_外部, #逼近_任何, )计次循环首 (轮廓2. 尺寸 (), i )最大外接矩形2 = 视觉_最大轮廓矩形V (轮廓2, i )如果真 (最大外接矩形2.宽度 > 10 )视觉_绘制轮廓 (极坐标变换, 轮廓2, i, 标量 (0, 0, 255 ), 2, 8, , 2147483647, )计次循环尾 ()视觉_极坐标变换 (极坐标变换, 极坐标变换_反, 尺寸2i (最大外接矩形.宽度, 最大外接矩形.高度 ), 阈值_中心, 半径, #插值_双线性二次 + #变换_极坐标 + #变换_逆变换 ) 视觉_显示图像 (“polarImg_Inv”, 极坐标变换_反 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 图片备份 | 多维矩阵类 | | | 灰度 | 多维矩阵类 | | | 圆信息 | 数组三维小数类 | | 0 | 是否NG | 逻辑型 | | | i | 整数型 | | | 矩形区域 | 矩形2i类 | | | 中心 | 点2i类 | | | 半径 | 小数型 | | | 感兴区域 | 多维矩阵类 | | | 阈值中心 | 点2f类 | | | 极变换 | 多维矩阵类 | | | 均值 | 多维矩阵类 | | | 绝对差 | 多维矩阵类 | | | 二值化 | 多维矩阵类 | | | 轮廓 | 点2i二维数组类 | | | 最大外接矩形 | 矩形2i类 | | | 极变换_反 | 多维矩阵类 | | | 输出感兴区域 | 多维矩阵类 | | | 图片蒙版 | 多维矩阵类 | | | 轮廓ID | 整数型 | | | j | 整数型 | | | 标签尺寸 | 尺寸2i类 | | |
图片. 复制 (图片备份, )视觉_颜色空间转换 (图片, 灰度, #颜色_BGR转GRAY, 0 )视觉_中值滤波 (灰度, 灰度, 3 )圆信息 = 视觉_霍夫圆 (灰度, #霍夫_梯度, 1, 100, 200, 30, 150, 150 )判断 (取数组成员数 (圆信息 ) = 0 )视觉_控制台输出 (“找圆失败!”, )返回 ()计次循环首 (取数组成员数 (圆信息 ), i )视觉_圆 (图片备份, 点2i (圆信息 [i ]. 值1 (), 圆信息 [i ]. 值2 ()), 圆信息 [i ]. 值3 (), 标量 (0, 0, 255 ), 3, #线类型_抗锯齿, 0 )视觉_圆 (图片备份, 点2i (圆信息 [i ]. 值1 (), 圆信息 [i ]. 值2 ()), 2, 标量 (0, 0, 255 ), 3, #线类型_抗锯齿, 0 )轮廓ID = i 计次循环尾 ()
矩形区域. 初始化 (圆信息 [轮廓ID ]. 值1 () - 圆信息 [轮廓ID ]. 值3 (), 圆信息 [轮廓ID ]. 值2 () - 圆信息 [轮廓ID ]. 值3 (), 2 × 圆信息 [轮廓ID ]. 值3 (), 2 × 圆信息 [轮廓ID ]. 值3 ()) 中心. 初始化 (圆信息 [轮廓ID ]. 值1 (), 圆信息 [轮廓ID ]. 值2 ()) 半径 = 圆信息 [轮廓ID ]. 值3 ()图片. 感兴区域 (矩形区域 ). 复制 (感兴区域, ) 阈值中心. 初始化 (中心.左边 - 矩形区域.左边, 中心.顶边 - 矩形区域.顶边 )视觉_极坐标变换 (感兴区域, 极变换, 尺寸2i (300, 600 ), 阈值中心, 半径, #插值_双线性二次 + #变换_极坐标 ) 视觉_颜色空间转换 (极变换, 灰度, #颜色_BGR转GRAY, 0 )视觉_均值滤波 (灰度, 均值, 尺寸2i (3, 501 ), , 4 ) 视觉_绝对差异 (灰度, 均值, 绝对差 ) 视觉_阈值 (绝对差, 二值化, 55, 255, #阈值_二进制 )视觉_中值滤波 (二值化, 二值化, 3 )视觉_查找轮廓 (二值化, 轮廓, , #检测_外部, #逼近_任何, )计次循环首 (轮廓. 尺寸 (), i )最大外接矩形 = 视觉_最大轮廓矩形V (轮廓, i )如果真 (最大外接矩形.宽度 > 13 )视觉_绘制轮廓 (极变换, 轮廓, i, 标量 (0, 0, 255 ), 2, 8, , 2147483647, )是否NG = 真 计次循环尾 ()视觉_极坐标变换 (极变换, 极变换_反, 尺寸2i (矩形区域.宽度, 矩形区域.高度 ), 阈值中心, 半径, #插值_双线性二次 + #变换_极坐标 + #变换_逆变换 ) 输出感兴区域 = 图片. 感兴区域 (矩形区域 )图片蒙版. 初始化 (极变换_反. 行数 (), 极变换_反. 列数 (), #Cv无符号字节型, )视觉_圆 (图片蒙版, 点2i (圆信息 [轮廓ID ]. 值1 () - 矩形区域.左边, 圆信息 [轮廓ID ]. 值2 () - 矩形区域.顶边 ), 圆信息 [轮廓ID ]. 值3 (), 标量 (255 ), -1, #线类型_抗锯齿, 0 ) 极变换_反. 复制 (输出感兴区域, 图片蒙版 ) 判断 (是否NG )标签尺寸 = 视觉_获取文本尺寸 (“'Result->NG”, #字体_衬线_简单, 1, 2, )视觉_矩形 (图片, 矩形2i (500, 20, 标签尺寸.宽 × 0.7, 标签尺寸.高 ), 标量 (212, 233, 252 ), -1, 8, 0 )视觉_放置文本 (图片, “Result->NG”, 点2i (500, 15 + 标签尺寸.高 ), #字体_衬线_简单, 0.7, 标量 (0, 0, 255 ), 2, 8, 假)标签尺寸 = 视觉_获取文本尺寸 (“'Result->OK”, #字体_衬线_简单, 1, 2, )视觉_矩形 (图片, 矩形2i (500, 20, 标签尺寸.宽 × 0.7, 标签尺寸.高 ), 标量 (212, 233, 252 ), -1, 8, 0 )视觉_放置文本 (图片, “Result->OK”, 点2i (500, 15 + 标签尺寸.高 ), #字体_衬线_简单, 0.7, 标量 (0, 255 ), 2, 8, 假)
|
|