车牌识别:HALCON智能检测全解析

bash 复制代码
dev_close_window()

**读取图片

bash 复制代码
read_image (Car2025, 'D:/ltg/Pictures/Images/car/CarSample.png')
dev_open_window(0, 0, -1, -1, 'black', WindowHandle)
dev_display(Car2025)

**转灰度图

bash 复制代码
rgb1_to_gray(Car2025, GrayImage)

**二值化处理(可用灰度直方图筛选)

bash 复制代码
threshold (GrayImage, Regions, 7, 99)

**连通(阻断分区域)打断

bash 复制代码
connection(Regions, ConnectedRegions)
复制代码
**形态学处理 相关算子[本例图像清晰未用到]
*操作	HALCON算子	典型作用	常使用场景
*-----------------------------------------------------------------------
*膨胀	dilation_circle	扩大区域,连接断裂部分	连接分散目标、裂缝填补、目标区域扩展
*腐蚀	erosion_circle	消除噪声,分离目标区域	背景噪声去除、目标分离、形态边界缩小
*开运算	opening_circle	去除噪声,平滑边界	去除细小杂质、优化形状、改善识别结果
*闭运算	closing_circle	填充孔洞,平滑边界	修复孔洞、封闭边界、填补不规则缺陷

**可用特征直方图筛选目标区域(以面积为主[配合特征检测工具])

bash 复制代码
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 15000, 18000)

***处理图片-转正图片

**生成一个仿射矩阵

bash 复制代码
shape_trans(SelectedRegions, RegionTrans, 'rectangle2')

**得到仿射矩阵的中心点坐标

bash 复制代码
area_center(RegionTrans, Area, Row, Column)

**得到仿射矩阵的斜率Phi

bash 复制代码
orientation_region(RegionTrans, Phi)

**判断斜率Phi正负,扶正图形

bash 复制代码
if (Phi>=0)
    Angle:=0
else
    Angle:=180
endif

**生成一个仿射矩阵

bash 复制代码
vector_angle_to_rigid(Row, Column, Phi, Row, Column, rad(Angle), HomMat2D)

**若车牌图片文字倾斜,则可以纠正(将 "Phi" 参数更改为角度参数 "rad(?)")

bash 复制代码
hom_mat2d_slant(HomMat2D, Phi, 'x', Column, Row, HomMat2DSlant)

**仿射矩阵转正(ROI区域)

bash 复制代码
affine_trans_region(RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

**对原图进行转正

bash 复制代码
affine_trans_image(Car2025, ImageAffineTrans, HomMat2D, 'constant', 'false')

**车牌区域扣图

bash 复制代码
reduce_domain(ImageAffineTrans, RegionAffineTrans, ImageReduced)

****开始识别车牌

**灰度化

bash 复制代码
rgb1_to_gray(ImageReduced, GrayImage1)

**反转图像,由'黑底白字'图像转为'白底黑字'图像[重要,字符识别依据]

bash 复制代码
invert_image(GrayImage1, ImageInvert)

**二值化[作用:生成红色目标区域]

bash 复制代码
threshold (GrayImage1, Regions1, 114, 188)

**开运算,去掉外框

bash 复制代码
opening_rectangle1(Regions1, RegionOpening, 3, 5)

**打断/分割整张图形为单个区域

bash 复制代码
connection(RegionOpening, ConnectedRegions1)

**选择ROI区域(多依面积为主,设置在每个字符占的面积最小区域和最大区域为一区间)

bash 复制代码
select_shape(ConnectedRegions1, SelectedRegions1, 'area', 'and', 600, 800)

**对ROI区域按列排序

bash 复制代码
sort_region(SelectedRegions1, SortedRegions, 'character', 'true', 'column')

**读取训练好的字符库

bash 复制代码
read_ocr_class_mlp('D:/Program Files/MVTec/HALCON-22.11-Steady/ocr/CNLicense_Plate_mlp.omc', OCRHandle)

**按字符库对比识别"对应/归类"相应字符,形成字符串数组Class

bash 复制代码
do_ocr_multi_class_mlp(SortedRegions, ImageInvert, OCRHandle, Class, Confidence)

***显示对应字符到屏幕上

bash 复制代码
dev_display(ImageAffineTrans)

**设置显示字体

bash 复制代码
set_display_font(WindowHandle, 30, 'mono', 'true', 'false')

**统计显示的字符数

bash 复制代码
count_obj(SortedRegions, Number)

**依次显示读取的字符

bash 复制代码
for Index:=1 to Number by 1
    select_obj(SortedRegions, ObjectSelected, Index)
    area_center(ObjectSelected,Area1, Row1, Column1)
    dev_disp_text(Class[Index-1],'window', Row1, Column1, 'black', [], [])
endfor
write_string(WindowHandle, Class)
disp_message(WindowHandle, Class, 'image', Row1, Column1, 'blue', 'true')
相关推荐
晚霞的不甘10 小时前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
愚公搬代码10 小时前
【愚公系列】《AI短视频创作一本通》016-AI短视频的生成(AI短视频运镜方法)
人工智能·音视频
哈__10 小时前
CANN内存管理与资源优化
人工智能·pytorch
极新10 小时前
智启新篇,智创未来,“2026智造新IP:AI驱动品牌增长新周期”峰会暨北京电子商务协会第五届第三次会员代表大会成功举办
人工智能·网络协议·tcp/ip
island131410 小时前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构任务的 Stream 调度机制
开发语言·人工智能·深度学习·神经网络
艾莉丝努力练剑10 小时前
深度学习视觉任务:如何基于ops-cv定制图像预处理流程
人工智能·深度学习
禁默10 小时前
大模型推理的“氮气加速系统”:全景解读 Ascend Transformer Boost (ATB)
人工智能·深度学习·transformer·cann
User_芊芊君子10 小时前
CANN大模型加速核心ops-transformer全面解析:Transformer架构算子的高性能实现与优化
人工智能·深度学习·transformer
摘星编程10 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
格林威10 小时前
Baumer相机玻璃制品裂纹自动检测:提高透明材质检测精度的 6 个关键步骤,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·材质·工业相机·sdk开发·堡盟相机