halcon例程 -- 逐字细究(六)


* bottle.hdev: Segment and read numbers on a beer bottle

* Step 0: Preparations
* Specify the name of the font to use for reading the date on the bottle.
* It is easiest to use the pre-trained font Industrial_0-9.  If you have run the
* program bottlet.hdev in this directory, you can activate the second line
* to use the font trained with this program.
FontName := 'Industrial_0-9'
* FontName := 'bottle'

* Step 1: Segmentation
dev_update_window ('off')
*更新图像窗口
read_image (Bottle, 'bottle2')
*读取图像
get_image_size (Bottle, Width, Height)
*获取图像的尺寸
dev_close_window ()
*关闭当前活动的窗体
dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowID)
*以指定的尺寸打开窗体,背景色为黑色
set_display_font (WindowID, 20, 'mono', 'true', 'false')
*设置显示字体格式
dev_display (Bottle)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程序运行终止
threshold (Bottle, RawSegmentation, 0, 95)
**利用全局阈值(中间分解线)分割图像,采用灰度区间g实现图像的全局分割,g的取值范围:[MinGray,MaxGray]
*Image 输入图像
*Region 输出分割后的区域名称
*MinGray 灰度值下限
*MaxGray 灰度值上限
*注:具体参数,可以通过操作灰度直方图来调控,自动生成代码
fill_up_shape (RawSegmentation, RemovedNoise, 'area', 1, 5)
**填充区域中含有某种特征的孔或缝隙进行填充,形成新的完成区域
*Region 输入需要填充孔(洞或裂缝)的区域
*RegionFillUp 输出填充后的区域
*Feature 输入填充特征,默认:'area'
*Min 输入该特征的最小值,默认: 1
*Max 输入该特征的最大值,默认: 100
opening_circle (RemovedNoise, ThickStructures, 2.5)
**打开一个图形结构基础的一个区域
*Region 输入一个需要被提取圆形成分的区域 
*RegionOpening 输出被提取圆形成分的区域
*Radius 输入圆形成分的半径
dev_display (Bottle)
*显示图像
dev_set_color ('green')
*显示轮廓的颜色
dev_display (ThickStructures)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程度运行终止
dev_set_draw ('margin')
*设置填充模式
dev_set_line_width (3)
*设置区域轮廓的线宽
dev_display (Bottle)
*显示图像
dev_display (ThickStructures)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程度运行终止
fill_up (ThickStructures, Solid)
**填充区域中的孔或裂缝等,将输入区域的孔,缝隙进行填充,形成新的完成区域
*Region 输入含孔(缝隙)的区域
*RegionFillUp 输出一个布满缝隙及孔的区域
dev_display (Bottle)
*显示图像
dev_display (Solid)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程度运行终止
opening_rectangle1 (Solid, Cut, 1, 7)
**打开一个矩区域基础的区域
*Region 输入一个需要被提取的矩形成分的区域
*RegionOpening 输出一个提取了矩形成分的区域
*Width 输入矩形的宽度
*Height 输入矩形的高度
dev_display (Bottle)
*显示图像
dev_display (Cut)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程度运行终止
connection (Cut, ConnectedPatterns)
**分离一个区域中相连接的部分(变成多个区域)
*Region 输入一个区域
*ConnectedRegions 输出独立并相连接的区域(数组)
intersection (ConnectedPatterns, ThickStructures, NumberCandidates)
**计算两个区域的交集(相同部分),对比两个区域,将相同的部分形成一个新的区域
*Region1 输入能够产生交集的区域1
*Region2 输入能够产生交集的区域1
*RegionIntersection 输出前两者的交集区域
dev_set_colored (12)
*设置区域的颜色
dev_display (Bottle)
*显示图像
dev_display (NumberCandidates)
*显示图像
disp_continue_message (WindowID, 'black', 'true')
*显示提示信息
stop ()
*程度运行终止
select_shape (NumberCandidates, Numbers, 'area', 'and', 300, 9999)
**根据区域要求的特征提取适应的区域
*reRegions 输入需要测量的区域(数组)
*SelectedRegions 输出符合的区域(数组),不符合的区域不会出现在该数组内
*Features 输入要检测的特征
*Operation 特征的方式,默认:and 即全部特征,or 特征之一
*Min 输入该特征的最小值[0,99999]
*Max 输入该特征的最大值[0,99999] Max >= Min
sort_region (Numbers, FinalNumbers, 'first_point', 'true', 'column')
**根据相邻位置归类区域
*Regions 输入要分类的区域
*SortRegions 输出分类后的区域
*SortMode 分类的方式,默认 'first_point'
*Order 分类次序 默认 'true'
*RowOrCol 分类是否采用按行还是按列依次分类,默认 'row'
dev_set_color ('red')
*设置区域的颜色
dev_display (Bottle)
*显示图像
dev_display (Numbers)
*显示图像
dev_set_shape ('rectangle1')
*设置显示区域的形状
dev_set_color ('green')
**设置区域的颜色
dev_display (FinalNumbers)
*显示图像
dev_set_shape ('original')
*设置显示区域的形状
dev_set_line_width (1)
*设置区域的轮廓的线宽
dev_set_draw ('fill')
*设置填充的模式

* Step2: Reading
read_ocr_class_mlp (FontName, OCRHandle)
*从一个文件中读取OCR分类器模型句柄
*FileName 输入需要读取的文件名,文件后缀为.omc,.fnt
*OCRHandle 输出OCR_mlp分类器模型句柄
do_ocr_multi_class_mlp (FinalNumbers, Bottle, OCRHandle, RecNum, Confidence)
**对一组字符区域内容进行OCR_mlp模型识别,输出到Class中去
*Character 输入需要辩认的字符区域
*Image 输入需要辨认字符的灰度值图像
*OCRHandle 输入需要分类的OCR_mlp分类器句柄
*Class 输出MLP识别对应的结果,该值保存的值为识别出来的字母或数字及符号等(数组),Class == Character
*Confidence 输出对应的特征相似值 (数组),该值 <= 1 Confidence == Character
area_center (FinalNumbers, Area, Row, ColNum)
*得到一个区域的面积及它的中心坐标
set_display_font (WindowID, 27, 'mono', 'true', 'false')
*设置显示字体格式
for i := 0 to |RecNum| - 1 by 1
    disp_message (WindowID, RecNum[i], 'image', 80, ColNum[i] - 3, 'green', 'false')
    *按格式输出数据信息
endfor
clear_ocr_class_mlp (OCRHandle)
**清除指定的OCR分类器模型句柄,释放该分类器所占据的存储空间
dev_update_window ('on')
*更新图像窗口
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值