halcon脚本-分离银币【附源码】


前言

本文对图像种的银币进行分割,然后计银币数量


一、原图

在这里插入图片描述

二、图像处理基本思路

先取一个银币的模板,然后根据模板使用findmodelshape得到

  • 首先二值化提取轮廓,会获得所有的银币区域
  • 根据轮廓获取只有一个银币的轮廓范围
  • 然后得到区域
  • 生成xld的基于形状的模板
  • 下面直接找模板即可

三、halcon代码实现

1.二值化获得区域

read_image (Coin, 'coin.jpg') 
* 平滑图像
mean_image(Coin, ImageMean, 5, 5) 
* 二值化
threshold(ImageMean, Region, 128, 255) 
* 分割区域
connection(Region, ConnectedRegions) 
* 选择只有一个银币的区域
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 95000, 100000) 

2.创建XLD模板

主要算子:create_shape_model_xld

*提取边界
gen_contour_region_xld(SelectedRegions, Contours, 'border') 
*XLD 輪廓(contour)的平滑
smooth_contours_xld(Contours, SmoothedContours, 15) 
*使用XLD轮廓作为输入参数
create_shape_model_xld(SmoothedContours, 'auto', 0, 360, 'auto', 'auto', 'ignore_local_polarity', 5, ModelID) 
*获得模板的轮廓
get_shape_model_contours(ModelContours, ModelID, 1) 

3.找模板

read_image(Image,'coin.jpg') 
mean_image(Image, ImageMean1, 3, 3) 
find_shape_model(Image, ModelID, 0, 0.78, 0.7, 20, 0.5, 'least_squares', 1, 0.9, Row, Column, Angle, Score) 
for Index := 0 to |Score|-1 by 1 
    disp_message(WindowHandle, Index, 'window', Row[Index], Column[Index], 'black', 'true') 
    * 生成刚性变换的矩阵
    vector_angle_to_rigid( 0, 0, 0, Row[Index], Column[Index], Angle[Index],HomMat2D) 
    * 刚性变换,为了在图像中呈现银币区域
    affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2D) 
endfor 

disp_message(WindowHandle, '硬币总数为:'+Index$'1''', 'window', 40, 12, 'black', 'true') 
clear_shape_model(ModelID)

4.效果展示

在这里插入图片描述

5.完整代码

read_image (Coin, 'coin.jpg') 
mean_image(Coin, ImageMean, 5, 5) 
threshold(ImageMean, Region, 128, 255) 
connection(Region, ConnectedRegions) 
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 95000, 100000) 
*提取边界
gen_contour_region_xld(SelectedRegions, Contours, 'border') 
*XLD 輪廓(contour)的平滑
smooth_contours_xld(Contours, SmoothedContours, 15) 
*使用XLD轮廓作为输入参数
create_shape_model_xld(SmoothedContours, 'auto', 0, 360, 'auto', 'auto', 'ignore_local_polarity', 5, ModelID) 
*找到模板的轮廓
get_shape_model_contours(ModelContours, ModelID, 1) 
dev_close_window() 
dev_open_window(0, 0, 512, 512, 'black', WindowHandle) 

read_image(Image,'coin.jpg') 
mean_image(Image, ImageMean1, 3, 3) 
find_shape_model(Image, ModelID, 0, 0.78, 0.7, 20, 0.5, 'least_squares', 1, 0.9, Row, Column, Angle, Score) 
for Index := 0 to |Score|-1 by 1 
    disp_message(WindowHandle, Index, 'window', Row[Index], Column[Index], 'black', 'true') 
    vector_angle_to_rigid( 0, 0, 0, Row[Index], Column[Index], Angle[Index],HomMat2D) 
    affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2D) 
endfor 

disp_message(WindowHandle, '硬币总数为:'+Index$'1''', 'window', 40, 12, 'black', 'true') 
clear_shape_model(ModelID)
### 回答1: Halcon 10.0 是一款强大的机器视觉开发软件,支持在Windows系统上运行。halcon10.0-windows.exe 是Halcon 10.0 软件的可执行文件,用于在Windows系统上安装和运行该软件。 通过运行 halcon10.0-windows.exe 文件,用户可以开始安装Halcon 10.0 软件。安装过程中,用户需要按照提供的安装向导进行操作,包括选择安装路径、设置组件和功能、以及输入必要的许可证信息等。完成安装后,用户可以在自己的计算机上打开Halcon 10.0 软件。 Halcon 10.0 软件提供了丰富的功能和工具,用于开发和实现机器视觉应用。它支持图像处理、图像分析、模式匹配、三维视觉、相机校准等多项功能。用户可以通过Halcon 10.0 软件进行图像的预处理、特征提取、目标识别和测量等操作,从而实现各种视觉检测和测量任务。 除了功能强大的视觉算法和工具,Halcon 10.0 软件还提供了友好的用户界面和丰富的编程接口,使得用户可以根据自己的需求进行定制化开发和编程。用户可以通过编写脚本或使用常见的编程语言如C++、C#等来编写自己的机器视觉应用程序。 总而言之,halcon10.0-windows.exe 是Halcon 10.0 软件的安装文件,通过安装和运行该软件,用户可以方便地进行机器视觉应用的开发和实现。 ### 回答2: Halcon 10.0-windows.exe是一种软件程序,它是由MVTec Software GmbH开发的一款专业机器视觉软件。Halcon被广泛应用于各种工业领域,如制造业、物流、医疗等,用于图像处理、检测、识别和测量等方面的任务。 Halcon 10.0-windows.exe是Halcon 10.0版本的Windows操作系统的可执行文件。这意味着它可以在Windows操作系统上运行,并且可以直接从该可执行文件启动Halcon 10.0软件。 Halcon 10.0是Halcon软件最新的一个重要版本,它引入了许多新功能和改进,以提供更好的机器视觉解决方案。该版本具有更高的性能、更强大的图像处理能力和更便捷的用户界面。用户可以使用Halcon 10.0进行图像分析、模式识别、目标检测、形状测量等任务。此外,Halcon 10.0还支持多种编程语言和平台,并提供了丰富的开发工具和函数库,以便用户根据自己的需求进行定制和扩展。 对于使用Halcon进行机器视觉应用的用户来说,Halcon 10.0-windows.exe是一个非常重要的文件,它提供了启动Halcon 10.0软件的能力。用户只需双击该文件,就可以快速启动Halcon 10.0,并开始使用其功能进行图像处理和分析。对于那些希望在Windows操作系统上进行机器视觉开发和应用的用户来说,Halcon 10.0-windows.exe无疑是一个不可或缺的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的广东仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值