原图
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020110422460047.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDY3ODEx,size_16,color_FFFFFF,t_70#pic_center)
代码
*这个示例程序演示了如何在图像中查找焊盘,
*以及如何使用fit_rectangle2_contour_xld来确定它们的位置、旋转和大小。
dev_update_window ('off')
read_image (Image, 'pads')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width * 2, Height * 2, 'black', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
* blob分析,寻找焊盘位置
fast_threshold (Image, Region, 180, 255, 20)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','anisometry'], 'and', [200,1], [1200,2])
* 构造一个用于亚像素级精确边缘检测的ROI。
fill_up (SelectedRegions, RegionFillUp)
shape_trans (RegionFillUp, RegionTrans, 'convex')
boundary (RegionTrans, RegionBorder, 'inner')
dilation_circle (RegionBorder, RegionDilation, 2.5)
union1 (RegionDilation, RegionUnion)
* 进行亚像素级的精确边缘检测。
reduce_domain (Image, RegionUnion, ImageReduced)
edges_sub_pix (ImageReduced, Edges, 'sobel_fast', 0.5, 20, 40)
* 筛选
select_shape_xld (Edges, SelectedContours, 'contlength', 'and', 10, 200)
* 合并相邻边缘碎片以获得每个焊盘的一个轮廓。。
union_adjacent_contours_xld (SelectedContours, UnionContours, 2, 1, 'attr_keep')
* 最小外接矩形
fit_rectangle2_contour_xld (UnionContours, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)
*显示
dev_display (Image)
dev_set_colored (12)
dev_display (Rectangle)
dump_window (WindowHandle, 'png', '定位结果')
结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201104224620939.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDY3ODEx,size_16,color_FFFFFF,t_70#pic_center)