Halcon学习笔记(五)几何定位+仿射+车牌识别
定位
- Blob分析
- 模板匹配
仿射
使用单位矩阵求仿射矩阵
示例:affine_trans_region.hdev
- 单位矩阵
hom_mat2d_identity (HomMat2DIdentity)
- 平移矩阵
hom_mat2d_translate()
- 旋转矩阵
hom_mat2d_rotate(HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate)
输入是原矩阵,输出是旋转矩阵,旋转角度是顺时针0.3度,旋转中心点是(256,256) - 缩放矩阵
hom_mat2d_scale (HomMat2DRotate, 1.5, 0.5, 256, 256, HomMat2DScale)
缩放点是(256,256),(1.5,0.5)表示x轴上缩放1.5倍,y轴上缩放0.5倍 - 仿射操作
对区域仿射
affine_trans_region (Region, egionAffineTrans, HomMat2DScale, 'nearest_neighbor')
对图像仿射
affine_trans_image()
对XLD进行仿射
affine_trans_xld()
……
使用模板匹配
示例:check_blister.hdev
access_channel (ImageOrig, Image1, 1)
获取第一通道的图片
threshold (Image1, Region, 90, 255)
阈值化
shape_trans (Region, Blister, 'convex')
凸化
orientation_region (Blister, Phi)
测量偏移角度
area_center (Blister, Area1, Row, Column)
测量面积及中心点坐标
vector_angle_to_rigid (Row1, Column1, Phi, Row2, Column2, 0, HomMat2D)
获得图片绕(Row1,Column1)点旋转Phi后得到中心点为(Row2,Column2),偏移角度为0的图片所需要的仿射矩阵
affine_trans_image (ImageOrig, Image2, HomMat2D, 'constant', 'false')
将仿射矩阵应用于图片
车牌识别
1、借助助手快速识别
第一步:打开一张车牌图片
read_image (Image, 'F:/Code/picTest/CarNumber/3.jpg')
第二步:转化为灰度图片
rgb1_to_gray (Image, GrayImage)
第三步:利用助手打开新的OCR
并根据OCR中第2点,点击任意一个绿笔头(一般选第一个,正矩形)绘制需要读取的区域,右击鼠标确定
第四步:在OCR中第3点输入你所希望读取的文本内容
第五步:勾选OCR中第4点第一项
第六步:应用快速设置
最后得到车牌识别号
2、Blob分析+mlp分类器实现
第一步:读取图片
第二步:灰度化
第三步:翻转图片亮度
invert_image (GrayImage, ImageInvert)
第四步:对灰度图片阈值化
threshold (GrayImage, Regions1, 96, 204)
第五步:Blob分析提取车牌号,这里见halcon学习笔记(二)实现相机物体抓取得到仅含有车牌号的区域,注意这里运用到了多个特征选择
connection (Regions1, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [0,164.27], [2945.62,191.47])
select_shape (SelectedRegions, SelectedRegions1, ['area','ratio'], 'and', [0,0], [200,2.0846])
select_shape (SelectedRegions1, SelectedRegions2, ['area','ratio','column'], 'and', [0,1.5793,138.85], [200,2,500])
第六步:对区域进行排序sort_region (SelectedRegions2, SortedRegions, 'character', 'true', 'column')
按照列对字母进行排序。
第七步:读取OCR分类器read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
这里需要注意的是要选'Industrial_0-9A-Z_NoRej.omc'
字体,及数字0-9及字母A-Z,根据以后需求不同加以更改,每一个字体不同内容可以在OCR助手字体旁边的放大镜中看。
第八步:进行分类do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
由于这是识别字是黑的,背景是白的。所以在第三步对图片进行了翻转。
最后得到分类结果
3、定位与区域分割
如果直接在RGB情况下阈值化效果不好,考虑颜色空间的转换,RGB转化为HSV
- 读取图片
read_image (Image, 'F:/Code/picTest/CarNumber/4.jpg')
- 分解RGB通道
decompose3 (Image, Red, Green, Blue)
- 转化为HSV三种类型的图片
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
- 对其中最明显的图片进行阈值分割
threshold (Saturation, Regions, 0, 90)
- 打散
connection (Regions, ConnectedRegions)
一定要保证车牌区域是完整的,如果断开了,要么调用unionl算子将其联合成一个区域,要么先膨胀将其接上!!!
如果车牌字符与边框相连,要么重新阈值化找到没有连接的阈值;要么开运算打断
- 选择车牌的大致区域
select_shape (ConnectedRegions, SelectedRegions, ['area','row'], 'and', [4041.92,186], [11826.4,354.42])
- 填充孔洞
fill_up (SelectedRegions, RegionFillUp)
- 剔除矩形外多余元素(视情况而定)
opening_rectangle1 (RegionFillUp, RegionOpening, 20, 30)
- 剔除多余元素
opening_circle (RegionOpening4, RegionOpening4, 3.5)
- 将形状转换成矩形
shape_trans (RegionOpening4, RegionTrans, 'rectangle2')
得到区域的偏转角度
orientation_region (RegionTrans, Phi)
计算区域面积和中心点坐标
area_center (RegionTrans, Area, Row, Column)
得到摆正图片的仿射矩阵
vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
仿射矩阵应用于图片
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
仿射矩阵应用于区域
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
从图片中截取该矩形区域
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
将截取的区域转化为灰度图片
rgb1_to_gray (ImageReduced, GrayImage)
……后续操作即前面提到的Blob分析得到车牌字符,最后分类器识别字符
显示
smallest_rectangle1 (RegionOpening2, Row1, Column1, Row2, Column2)
count_obj (RegionOpening2, Number)
for i := 1 to Number by 1disp_message (WindowHandle, Class[i-1], 'image', Row2[i-1], Column1[i-1], 'green', 'false')
endfor
Halcon学习笔记(五)几何定位+仿射+车牌识别相关推荐
- Halcon学习笔记02——透视形变的车牌识别
1程序流程 整体流程如下图所示: 首先通过RGB→HSV在颜色空间进行Blob分析提取车牌区域,提取区域如下图所示: 可以发现图片出现了透视变换,由于拍摄视角未正视车牌,因此矩形的车牌变成了斜四边形. ...
- Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...
- opencv学习笔记五--文件扫描+OCR文字识别
opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...
- Halcon学习笔记(九)——OCR实战练习 倾斜日期检测、倒着的字符检测
第四-八讲 OCR实战练习 在基于之前的例程分析之上,这里做具体应用,比如,食品包装袋上倾斜的日期识别,温度计上倒着的字符识别等. 倾斜日期识别 首先,对于这样一幅图片,怎样实现对日期的提取? 法一: ...
- Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)
Halcon学习笔记:select_points_object_model_3d 3D对象模型阀值分割 This example program shows how to use the operat ...
- 【AngularJs学习笔记五】AngularJS从构建项目开始
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
- Halcon基于形状的几何定位函数说明
Halcon基于形状的几何定位函数说明 1. create_shape_model(Template: : //reduce_domain后的模板图像 NumLevels,//金字塔的层数,可设为&q ...
- Halcon 学习笔记八:颜色识别
Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
最新文章
- postgresql日常操作命令
- 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...
- sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍
- php 禁止ajax 重复请求,js ajax请求防止重复提交
- Java序列化的这三个坑千万要小心
- 马尾物联网企业主导或参与制定修订各级标准达60项
- NYOJ 取石子总结
- 关于Lattic Diamond软件安装不成功问题(license问题)
- linux zip unzip 命令
- python 有道翻译,python 实现有道翻译功能
- Nopcommerce kendo UI Roxy Fileman控件的汉化
- 解决Samba服务无法访问 网络名不再可用的问题
- 深入浅出实现Electron音量调节功能
- 如何看待ICCV 2021接收论文被指抄袭?
- 大学生家乡网页设计作业模板下载 南京城市网页设计作业成品 静态HTML旅游景点网页制作下载_网页设计代码
- Win11封杀盗版office!不用找新密钥,这200套全行业终极模板够你用一辈子,一会儿删...
- 陈老师排课12A版的手工调课的方法
- Java多线程案例之线程池
- Python-混合高斯分布(GMM)的应用及K-S检验
- 奇偶页不同页眉页脚设置