Halcon视觉实战例程之blob分析车牌识别

该例程目的是识别图中的车牌(汉字除外)
直接上代码

read_image (Image, 'C:/车牌2.png')

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*拆rgb三通道
decompose3(Image,Red,Green,Blue)

*从rgb转换至hsv空间
trans_from_rgb (Red,Green,Blue,Hue,Saturation,Intensity,'hsv')

threshold (Saturation, Regions, 180, 255)

*开运算去除噪声
opening_rectangle1 (Regions, RegionOpening, 1, 1)

fill_up (RegionOpening, RegionFillUp)
connection (RegionFillUp, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4578.85, 6137.99)
shape_trans (SelectedRegions, RegionTrans, 'rectangle2')
orientation_region (RegionTrans, Phi)
area_center (RegionTrans, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(0), HomMat2D)
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)

*以上内容:提取出车牌并矫正完毕

*ImageReduced暗背景亮字体,灰度翻转用来识别
invert_image (ImageReduced, ImageInvert)
rgb1_to_gray (ImageReduced, GrayImage)
threshold (GrayImage, Regions1, 109, 255)
connection (Regions1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 197.58, 349.01)
sort_region (SelectedRegions1, SortedRegions, 'character', 'true', 'column')

*以上内容:数字/字符提取分割完毕,可以识别了
*'Industrial_0-9A-Z_NoRej.omc'指识别工业字体
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
disp_message (WindowHandle, Class, 'window', 12, 12, 'black', 'true')

识别结果
在这里插入图片描述
原图
在这里插入图片描述

### Halcon 中关于缺陷检测的问题及解决方案 #### 基于 Blob 分析的药片缺陷检测 对于一板药片的缺陷检测,可以通过 blob 分析来实现。具体来说,在 `check_blister.hdev` 例程中展示了如何利用 HALCONblob 功能来进行此类检测[^1]。 ```hdevelop * 加载图像并预处理 read_image (Image, 'blister') reduce_domain (Image, Region, ImageReduced) * 进行形态学操作以增强特征 dilation_circle (Region, RegionDilation, 0.8) * 执行 blob 分析 connection (RegionDilation, ConnectedRegions) select_shape_std (ConnectedRegions, Selected Regions, 'max_area', 500) * 计算形状特征用于分类 shape_trans (SelectedRegions, Features, 'elliptic_axis') * 输出结果 disp_message (WindowHandle, 'Defect detected!', 'window', Row, Column, Color, ...) ``` 此方法能够有效识别药片是否存在缺失或其他形式的物理损伤等问题。 #### 条形码读取错误及其解决办法 当遇到条形码无法正常被 HALCON 读取的情况时,可以尝试通过设置特定参数来改善性能。例如: - 调整扫描方向数量; - 修改最小/最大宽度比例限制; - 更改亮度阈值等。 这些都可以借助 `set_bar_code_param()` 函数完成配置调整工作[^2]。 ```cpp // 设置条形码参数示例 Hlong result; char *param_name = "num_scans"; int num_scans_value = 3; result = set_bar_code_param(HobjectID,param_name,num_scans_value); if(result != H_MSG_TRUE){ printf("Failed to set bar code parameter.\n"); } ``` 以上措施有助于提高复杂环境下的一维条形码识读成功率。 #### 结合 C# 实现更高效的药品质量控制系统 为了进一步提升系统的灵活性与可扩展性,还可以考虑采用 C# 和 HALCON 组合的方式开发应用程序。这种方式不仅继承了两者各自的优势特性,还便于集成到现有的 .NET 平台之上,从而简化部署流程并降低维护成本[^4]。 ```csharp using System; using HalconDotNet; // 引入HALCON库 class Program { static void Main(string[] args) { try{ HTuple hv_WindowHandle; // 初始化窗口显示环境... // 开始执行具体的图像采集和处理逻辑... Console.WriteLine("Program finished successfully."); } catch(Exception e){ Console.Error.WriteLine($"An error occurred: {e.Message}"); } } } ``` 上述代码片段仅作为演示用途,并未包含完整的业务功能实现细节;实际项目中需根据需求定制相应算法模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值