dev_close_window () read_image (Image151724125Raw, 'F:/烟草飞花实验数据/522实验/新建文件夹/15-17-24-125-Raw.bmp') dev_open_window (0, 0, 512, 512, 'black', WindowHandle1) dev_display (Image151724125Raw) edges_color (Image151724125Raw, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40) threshold (ImaAmp, Region, 128, 255) select_shape (Region, SelectedRegions, 'area', 'and', 150, 99999) connection (SelectedRegions, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions1, 'area', 'and', 150, 99999) reduce_domain (ImaAmp, SelectedRegions1, ImageReduced) lines_gauss (ImageReduced, Lines, 1.5, 3, 8, 'light', 'true', 'bar-shaped', 'true') intersection_lines (Lines, Row1, Col1, Row2, Col2) distance_pp (Row1, Col1, Row2, Col2, Length)
时间: 2024-01-14 07:02:16 浏览: 124
iim_read.rar_iim_read_iimcom
这段代码是使用Halcon测量纤维长度的一个示例。具体的操作是:
1. 关闭当前的窗口,以清空之前的显示。
```
dev_close_window()
```
2. 读取图片文件,并将其显示在一个新的窗口中。
```
read_image(Image151724125Raw, 'F:/烟草飞花实验数据/522实验/新建文件夹/15-17-24-125-Raw.bmp')
dev_open_window(0, 0, 512, 512, 'black', WindowHandle1)
dev_display(Image151724125Raw)
```
3. 使用Canny算法进行边缘检测,并将结果保存在两个图像变量中:ImaAmp和ImaDir。
```
edges_color(Image151724125Raw, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40)
```
4. 对ImaAmp图像进行阈值化处理,将像素值大于128的像素设置为255,其余像素设置为0,并将结果保存在Region变量中。
```
threshold(ImaAmp, Region, 128, 255)
```
5. 根据连通域的面积大小选择合适的区域,并将结果保存在SelectedRegions变量中。
```
select_shape(Region, SelectedRegions, 'area', 'and', 150, 99999)
```
6. 连接选定的区域,并将结果保存在ConnectedRegions变量中。
```
connection(SelectedRegions, ConnectedRegions)
```
7. 根据连通域的面积大小再次选择合适的区域,并将结果保存在SelectedRegions1变量中。
```
select_shape(ConnectedRegions, SelectedRegions1, 'area', 'and', 150, 99999)
```
8. 对ImaAmp图像进行减少域操作,将不在SelectedRegions1中的像素都设置为0,并将结果保存在ImageReduced变量中。
```
reduce_domain(ImaAmp, SelectedRegions1, ImageReduced)
```
9. 对ImageReduced图像进行线段检测,并将检测结果保存在Lines变量中。
```
lines_gauss(ImageReduced, Lines, 1.5, 3, 8, 'light', 'true', 'bar-shaped', 'true')
```
10. 求出所有线段的交点,并将交点坐标保存在Row1、Col1、Row2和Col2变量中。
```
intersection_lines(Lines, Row1, Col1, Row2, Col2)
```
11. 计算纤维长度,即求出所有线段的长度,并将结果保存在Length变量中。
```
distance_pp(Row1, Col1, Row2, Col2, Length)
```
需要注意的是,这段代码仅仅是一个示例,具体的操作应该根据实际情况进行调整。例如,阈值化操作中的阈值、select_shape操作中的面积阈值等都需要根据纤维的特性进行调整。
阅读全文