引脚个数、引脚宽度、引脚之间距离

发布于:2025-06-28 ⋅ 阅读:(16) ⋅ 点赞:(0)

原图:

最终效果图如下:

 1.读取图片并设置参数
read_image (Image, 'ic_pin')
dev_set_draw ('margin')
dev_set_line_width (2)
dev_get_window (WindowHandle)
get_image_size (Image, Width, Height)
2.绘制提取的ROI区域
r:=58 // 旋转矩形的中心点坐标
c:=485 // 旋转矩形的中心点坐标
pie:=0 // 旋转角度
l1:=435 // 旋转中心的长半径
l2:=10 // 旋转中心的短半径
gen_rectangle2 (Rectangle, r, c, 0, l1, l2)
* 最后效果如下图所示:

 3.根据ROI生成旋转矩形的测量对象
gen_measure_rectangle2 (r, c, rad(0), l1, l2, Width, Height, 'nearest_neighbor', MeasureHandle)
* 参数1 参数2 矩形的中心点坐标
* 参数3 角度
* 参数4、5 长半径和短半径
* 参数6、7 是图像的宽度和高度
* 参数8 插值算法
* 参数9 生成测量对象 就可以理解成卡尺工具(VisionMaster)或者定位工具(VisionPro)
4.循环遍历引脚
n:=100 // 多个引脚 需要循环查找边缘对 假设查找100个边缘对
for Index := 0 to n by 1

    measure_pairs (Image, MeasureHandle, 2, 30, 'all', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
    * measure_pairs:测量矩形或圆弧形内检测出来的边缘 常用于测量五日宽度和高度等
    * 参数1 输入图像
    * 参数2 输入测量对象
    * 参数3 高斯平滑参数 值越大越模糊
    * 参数4 边缘幅度 8bit的灰度图 阈值范围0-255,设置为灰度值的10%-20%左右 阈值越大,漏检真实边缘,阈值过低误检测
    * 参数5 边缘极性 all:所有的边缘极性  positive 检测从暗到亮的边缘对,'negative'检测从亮到暗的边缘对
    * 参数6 选择 边缘对的方式 all 返回所有的边缘对,first 返回第一个边缘对,last 返回最后一个的边缘对
    * 参数7、8、9 第一条边的坐标 和 第一条边的边缘弧度
    * 参数10、11、12 第二条边的坐标 和 第二条边的边缘弧度
    * 参数13 IntraDistance 边缘对内部的距离  也就是引脚的宽度
    * 参数14 InterDistance 边缘对于边缘对之间的距离
    
endfor

获取到的参数如下: 

5.标注引脚边缘对和宽度
disp_line (WindowHandle, RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond)
disp_message (WindowHandle, '个数:'+|IntraDistance|, 'window', 200, 300, 'black', 'true')

avgDistance:=sum(IntraDistance)/|IntraDistance| // 引脚的平均值
avgDistance2:=sum(InterDistance)/|InterDistance| // 引脚之间的平均距离

disp_message (WindowHandle, '平均宽度:'+avgDistance, 'window', 220, 300, 'black', 'true')
disp_message (WindowHandle, '平均距离:'+avgDistance2, 'window', 240, 300, 'black', 'true')

最终效果:


网站公告

今日签到

点亮在社区的每一天
去签到