Halcon找圆判断是否为实心
时间: 2023-07-10 12:31:16 浏览: 140
Halcon 寻找圆心程序
4星 · 用户满意度95%
在Halcon中,可以使用reduce_domain函数和count_obj函数来判断圆是否为实心。以下是一个简单的示例代码:
```Halcon
read_image(Image, 'circle.jpg')
set_part(Image, 0, 0, 5000, 5000)
convert_image_type(Image, Image, 'byte')
create_shape_model(Image, 'auto', 0, 0, 'auto', 'auto', 'use_polarity', 30, 0.8, 'auto', 'auto', 'auto', ModelID)
find_shape_models(Image, ModelID, 0, 0, 0.5, 1, 0.5, 'least_squares', 6, 0.7, FoundRow, FoundColumn, FoundAngle, FoundScale, Score)
gen_circle_contour_xld(Circle, FoundRow, FoundColumn, FoundScale, 0, 6.28318, 'positive', 1)
reduce_domain(Image, Circle, Region)
count_obj(Region, Count)
if Count == 1:
dev_disp_message(WindowHandle, 'The circle is solid', 'window', 12, 12, 'green', 'true')
else:
dev_disp_message(WindowHandle, 'The circle is not solid', 'window', 12, 12, 'red', 'true')
```
在这个示例代码中,我们首先读入图片并转换为byte类型的图像。然后使用create_shape_model函数创建模板。接着使用find_shape_models函数在图像中找到模板,并返回圆心坐标、角度、缩放比例和相似度分数等信息。然后,使用gen_circle_contour_xld函数根据圆心坐标、角度和缩放比例生成圆形轮廓。接着,使用reduce_domain函数将圆形轮廓所在的区域提取出来,并使用count_obj函数计算区域中对象的数量。如果数量为1,则判断为实心圆;否则判断为非实心圆。最后,在窗口中显示出判断结果。需要注意的是,在使用reduce_domain函数时,需要将图像和圆形轮廓的数据类型设置为相同的类型。
阅读全文