当前位置: 首页 > news >正文

【机械视觉】Halcon—【十一、车牌检测和筛子检测】

【机械视觉】Halcon—【十一、车牌检测和筛子检测】

目录

【机械视觉】Halcon—【十一、车牌检测和筛子检测】

车牌检测

图片:

第一步:阈值分割+剪切车牌

第二步: 进行仿射变换

第三步: 阈值分割提取字符

第四步: 对车牌号进行拆分并按照顺序拼装

车牌检测完整代码

筛子检测

图片:

项目实例:


车牌检测

图片:

第一步:阈值分割+剪切车牌

*********阈值分割+剪切****************
threshold (GrayImage, Region, 76, 100)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 99999)
shape_trans (SelectedRegions, RegionTrans, 'rectangle2')
reduce_domain (GrayImage, RegionTrans, ImageReduced)
crop_domain (ImageReduced, ImagePart)

第二步: 进行仿射变换

**********仿射变换**********
area_center (Image, Area, Row, Column)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(-5), Row, Column, HomMat2DRotate)
hom_mat2d_slant (HomMat2DRotate,rad(15), 'x', Row, Column, HomMat2DSlant)
affine_trans_image (ImagePart, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')
affine_trans_image (ImageAffineTrans, ImageAffineTrans1, HomMat2DSlant, 'constant', 'false')

第三步: 阈值分割提取字符

**********阈值分割************(将车牌上的字符提取出来)
threshold (ImageAffineTrans1, Region1, 172, 255)
opening_circle (Region1, RegionOpening, 1.5)
connection (RegionOpening, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 20, 99999)

第四步: 对车牌号进行拆分并按照顺序拼装

************对车牌号进行拆分************
select_obj (SelectedRegions1, N, 1)
select_obj (SelectedRegions1, i8,2)
select_obj (SelectedRegions1, i2,3)
select_obj (SelectedRegions1, E,4)
select_obj (SelectedRegions1, C,5)
select_obj (SelectedRegions1, i6,6)
select_obj (SelectedRegions1, su1,7)
select_obj (SelectedRegions1, su2,8)
select_obj (SelectedRegions1, su3,9)***********对车牌号进行拼装***********
gen_empty_obj (NumNames)  // 创建一个空的对象NumNames
* 苏
union2 (su1, su2, RegionUnion)
union2 (RegionUnion, su3, Su)
* E
concat_obj (Su, E, NumNames)
*C
concat_obj (NumNames, C, NumNames)
*6 
concat_obj (NumNames, i6, NumNames)
*2
concat_obj (NumNames, i2, NumNames)
*N
concat_obj (NumNames, N, NumNames)
*8
concat_obj (NumNames, i8, NumNames)  // NumNames 就是组装好的图像,可根据索引对每一个字符进行查询dev_open_window (Row, Column, 512, 512, 'black', WindowHandle)
dev_display (NumNames)

车牌检测完整代码

dev_close_window ()
dev_update_off ()
read_image (Image, '1')
rgb1_to_gray (Image, GrayImage)*********阈值分割+剪切****************
threshold (GrayImage, Region, 76, 100)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 99999)
shape_trans (SelectedRegions, RegionTrans, 'rectangle2')
reduce_domain (GrayImage, RegionTrans, ImageReduced)
crop_domain (ImageReduced, ImagePart)**********仿射变换**********
area_center (Image, Area, Row, Column)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(-5), Row, Column, HomMat2DRotate)
hom_mat2d_slant (HomMat2DRotate,rad(15), 'x', Row, Column, HomMat2DSlant)
affine_trans_image (ImagePart, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')
affine_trans_image (ImageAffineTrans, ImageAffineTrans1, HomMat2DSlant, 'constant', 'false')**********阈值分割************(将车牌上的字符提取出来)
threshold (ImageAffineTrans1, Region1, 172, 255)
opening_circle (Region1, RegionOpening, 1.5)
connection (RegionOpening, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 20, 99999)************对车牌号进行拆分************
select_obj (SelectedRegions1, N, 1)
select_obj (SelectedRegions1, i8,2)
select_obj (SelectedRegions1, i2,3)
select_obj (SelectedRegions1, E,4)
select_obj (SelectedRegions1, C,5)
select_obj (SelectedRegions1, i6,6)
select_obj (SelectedRegions1, su1,7)
select_obj (SelectedRegions1, su2,8)
select_obj (SelectedRegions1, su3,9)***********对车牌号进行拼装***********
gen_empty_obj (NumNames)  // 创建一个空的对象NumNames
* 苏
union2 (su1, su2, RegionUnion)
union2 (RegionUnion, su3, Su)
* E
concat_obj (Su, E, NumNames)
*C
concat_obj (NumNames, C, NumNames)
*6 
concat_obj (NumNames, i6, NumNames)
*2
concat_obj (NumNames, i2, NumNames)
*N
concat_obj (NumNames, N, NumNames)
*8
concat_obj (NumNames, i8, NumNames)  // NumNames 就是组装好的图像,可根据索引对每一个字符进行查询dev_open_window (Row, Column, 512, 512, 'black', WindowHandle)
dev_display (NumNames)* tuple_regexp_select (numbers, '^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新港澳台][A-HJ-NP-Z][A-Z0-9]{4,5}[A-Z0-9挂学警港澳]$', Selection1)


筛子检测

图片:

项目实例:

dev_close_window ()
dev_update_off ()
read_image (Image, '筛子')
threshold (Image, Region, 40, 160)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 600, 3000)
count_obj (SelectedRegions, Number)dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (SelectedRegions)
dev_disp_text ('筛子点数:'+Number, 'window', 'top', 'left', 'black', [], [])

http://www.lqws.cn/news/189451.html

相关文章:

  • Oracle 用户名大小写控制
  • CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比
  • PyQt6 GUI应用程序开发实操指南
  • 2025最新VMware17如何通过官网进行下载
  • 中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
  • 车辆测试数据采集解决方案:同步支持总线协议、模拟传感与远程监控的关键技术
  • 理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
  • Excel 表格内批量添加前缀与后缀的实用方法
  • 区块链可投会议CCF A--SP 2026 截止11.13 附录用率
  • 在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法
  • Python数学可视化:3D参数曲面与隐式曲面绘制技术
  • Skia如何绘制几何图形
  • Linux驱动学习day2
  • vm+ubuntu24.04扩展磁盘
  • Ubuntu创建修改 Swap 文件分区的步骤——解决嵌入式开发板编译ROS2程序卡死问题
  • 使用 Docker Compose 部署 Jenkins(LTS 版)持续集成环境
  • JAVA-什么是JDK?
  • TP6 实现一个字段对数组中的多个值进行LIKE模糊查询(OR逻辑)
  • HTTP协议
  • 影楼精修-AI衣服祛褶皱算法解析
  • LLM Agent 如何颠覆股价预测的传统范式
  • PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式
  • 高效复用 Cursor 请求,提升开发效率 —— 使用 interactive-feedback-mcp 工具详解
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • Python 训练营打卡 Day 45
  • 【001】frida API分类 总览
  • css元素的after制作斜向的删除线
  • 飞云智能波段主图+多空短线决策副图指标,组合操盘技术图文解说
  • SpringCloud学习笔记-2
  • 【Elasticsearch】映射:Nested 类型