当前位置: 首页 > 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', [], [])

相关文章:

  • 爱普生差分晶振SG2016HHN精准医疗的时钟保障
  • 软件验收报告对企业的重要性
  • 5G网络中频段的分配
  • MySQL 高级学习篇
  • C++.OpenGL (4/64)纹理(Texture)
  • 智能对联网页小程序的仓颉之旅
  • Linux 内核性能分析确保成效的关键知识点总结
  • Android端口转发
  • DTS 数据迁移
  • 接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法
  • 02 nginx 的环境搭建
  • python打卡训练营打卡记录day46
  • 小程序实现下拉刷新(踩坑 下拉刷新不触发)
  • 【Linux基础知识系列】第十三篇-Cron与定时任务管理
  • 【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
  • 09.三数之和
  • 低内聚高耦合的衡量指标
  • Linux top 命令 的使用总结
  • Python Day43 学习(日志Day10-11复习)
  • SQLServer中的存储过程与事务
  • 为何用wdcp建立网站连不上ftp/网络营销策略优化
  • 临沂哪里有做网站/网络营销文案策划
  • wordpress页面关键词和描述/seo的优点
  • 钟楼做网站/seo规则
  • 北京h5网站建设报价/什么是网络整合营销
  • 做网站的公司苏州/网站制作代码