用18.11版本halcon提取出图中的区域,算出每个药品的面积和中心点,并将数据展示在图中
时间: 2024-02-24 21:59:25 浏览: 53
halcon读取图片并定位区域
好的,我会尽力回答你的问题。首先,我需要确认你的图像是什么类型的,是否是二值化的,以及药品的形状和大小是否相似。因为这些因素会影响到提取区域和计算面积的方法。
假设你的图像已经被二值化,每个药品的形状相似,我可以给你提供以下的代码示例来实现你的需求:
```
read_image(Image, 'your_image.png') // 读入图像
threshold(Image, BinaryImage, 128, 255) // 二值化图像,阈值根据实际情况调整
// 提取药品区域
connection(BinaryImage, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', [MinArea, MaxArea])
// MinArea 和 MaxArea 是药品区域的最小和最大面积,根据实际情况调整
// 计算面积和中心点
area_center(SelectedRegions, Area, Row, Column)
// 在图中显示结果
dev_display(Image)
dev_display_region(SelectedRegions)
for i := 0 to |Area|-1
dev_set_color('red')
dev_set_font('Arial', 16, 'false', 'false')
dev_display_text(Row[i]-20, Column[i]+20, Area[i].ToString())
dev_set_color('green')
dev_display_circle(Row[i], Column[i], 5)
endfor
```
上述代码中,我们首先读入图像并将其二值化。然后,使用`connection`和`select_shape`函数提取出药品区域。接着,使用`area_center`函数计算每个区域的面积和中心点。最后,使用`dev_display`和`dev_display_region`函数将结果显示在图像中,并使用`dev_display_text`和`dev_display_circle`函数在每个药品区域的中心点上显示面积和中心点。
需要注意的是,上述代码中的参数需要根据实际情况进行调整,以保证提取的区域和计算的面积和中心点准确无误。
阅读全文