广东高端网站设计公司价格,wordpress json 登陆,农产品销售平台,手机中关村在线报价大全车牌示例 流程: 读取图片转灰度图阈值分割,找车牌内容将车牌位置设置变换区域形状找到中心点和弧度利用仿射变换,斜切车牌旋转转正,把车牌抠出来利用形态学操作拼接车牌号数字训练ocr开始识别中文车牌 本文章用到的算子(解析)
Halcon 算子-承接车牌识别-CSDN博客 rgb1_to_gray…车牌示例 流程: 读取图片转灰度图阈值分割,找车牌内容将车牌位置设置变换区域形状找到中心点和弧度利用仿射变换,斜切车牌旋转转正,把车牌抠出来利用形态学操作拼接车牌号数字训练ocr开始识别中文车牌 本文章用到的算子(解析)
Halcon 算子-承接车牌识别-CSDN博客 rgb1_to_gray 转灰度图 threshold 阈值分割 connection 将图像进行分割多张 select_shape 特征阈值 shape_trans 变换区域形状 area_center 取区域面积和中心 orientation_region 区域方向 vector_angle_to_rigid 计算平移和旋转仿射变换关系的变换矩阵 hom_mat2d_slant 斜切 affine_trans_region 仿射变换区域 affine_trans_Image 图像仿射变换 reduce_domain 取域图像 opening_circle 使用圆形结构的开运算 sort_region 排序区域 select_obj 选中组中对象 union2 计算两区域并集 gen_empty_oj 创建空对象 concat_obj 合并元组 write_ocr_trainf 写OCR训练文件 read_ocr_trainf_names 读OCR训练文件名 create_ocr_class_mlp 创建OCR多层感知器 trainf_ocr_class_mlp 从文件训练OCR多层感知器 write_ocr_class_mlp 写OCR多层感知器 read_ocr_class_mlp 读OCR多层感知器 do_ocr_multi_class_mlp 执行OCR多层感知器多分类 set_tposition 设置文本光标位置 1、关闭数据、窗体
dev_update_off ()
dev_close_window ()
2、读取图片、打开窗体
read_image (Image, F:/Halcon/Image/车牌.jpg)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
3、处理图片-find车牌
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 76, 100)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, area, and, 8600, 10000) 效果 threshold connection select_shape 4、处理图片-变换区域形状
shape_trans (SelectedRegions, RegionTrans, rectangle2) 5、取区域面积和中心
area_center (RegionTrans, Area, Row, Column) 6、旋转仿射变换、斜切、旋转、抠图
orientation_region (RegionTrans, Phi)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(0), HomMat2D)
hom_mat2d_slant (HomMat2D, rad(15), x, Column, Row, HomMat2DSlant)
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2DSlant, nearest_neighbor)
affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, constant, false)
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
效果 斜切区域 斜切图像 旋转纠正后区域 7、转灰度图进行形态学操作阈值操作进行排序
rgb1_to_gray (ImageReduced, GrayImage1)
threshold (GrayImage1, Regions1, 172, 255)
opening_circle (Regions1, RegionOpening, 1.5)
closing_circle (Regions, RegionClosing, 1.7) 注意这个知识做个对比
connection (RegionOpening, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, area, and, 19.97, 600)
sort_region (SelectedRegions1, SortedRegions, character, true, column) 这是分成多区域的苏字也被分割多个了所以下面要进行合并
8、组装车牌号苏字
select_obj (SortedRegions, ObjectSelected1, 1)
select_obj (SortedRegions, ObjectSelected2, 2)
select_obj (SortedRegions, ObjectSelected3, 3)
union2 (ObjectSelected1, ObjectSelected2, RegionUnion)
union2 (RegionUnion, ObjectSelected3, RegionUnion1)
select_obj (SortedRegions, ObjectSelected4, 4)
select_obj (SortedRegions, ObjectSelected5, 5)
select_obj (SortedRegions, ObjectSelected6, 6)
select_obj (SortedRegions, ObjectSelected7, 7)
select_obj (SortedRegions, ObjectSelected8, 8)
select_obj (SortedRegions, ObjectSelected9, 9) 9、将上面零散的车牌号进行拼接
gen_empty_obj (EmptyObject)
concat_obj (EmptyObject, RegionUnion1, EmptyObject)
concat_obj (EmptyObject, ObjectSelected4, EmptyObject)
concat_obj (EmptyObject, ObjectSelected5, EmptyObject)
concat_obj (EmptyObject, ObjectSelected6, EmptyObject)
concat_obj (EmptyObject, ObjectSelected7, EmptyObject)
concat_obj (EmptyObject, ObjectSelected8, EmptyObject)
concat_obj (EmptyObject, ObjectSelected9, EmptyObject) 10、创建训练文件并读取
TrainFile:./Charactor.trf
Words:[苏,E,C,6,2,N,8]
write_ocr_trainf (EmptyObject, GrayImage1, Words, TrainFile)
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
create_ocr_class_mlp (8, 10, constant, default, CharacterNames, 80, none, 10, 42, OCRHandle)
trainf_ocr_class_mlp (OCRHandle, TrainFile, 200, 1, 0.01, Error, ErrorLog)
11、训练omc开始识别
read_ocr_class_mlp (./Charactor.omc, OCRHandle1)
do_ocr_multi_class_mlp (EmptyObject, GrayImage1, OCRHandle1, Class, Confidence)
dev_clear_window ()
dev_set_color (red)
set_display_font (WindowHandle,30, mono, true, false)
for Index:0 to |Class|-1 by 1set_tposition (WindowHandle, 30, 12040*Index)write_string (WindowHandle, Class[Index])
endfor全部代码
dev_update_off ()
dev_close_window ()
*读取图片
read_image (Image, F:/Halcon/Image/车牌.jpg)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
* 处理图片 - 定位车牌
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 76, 100)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, area, and, 8600, 10000)
* 处理图像-转正
shape_trans (SelectedRegions, RegionTrans, rectangle2)
* 找到中心点
area_center (RegionTrans, Area, Row, Column)
*找弧度
orientation_region (RegionTrans, Phi)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(0), HomMat2D)
hom_mat2d_slant (HomMat2D, rad(15), x, Column, Row, HomMat2DSlant)
affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2DSlant, nearest_neighbor)
affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, constant, false)
reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
* 开始识别 图片处理 苏字拼接
rgb1_to_gray (ImageReduced, GrayImage1)
threshold (GrayImage1, Regions1, 172, 255)
opening_circle (Regions1, RegionOpening, 1.5)
closing_circle (Regions, RegionClosing, 1.7)
connection (RegionOpening, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, area, and, 19.97, 600)
sort_region (SelectedRegions1, SortedRegions, character, true, column)
* 组装苏字区域
select_obj (SortedRegions, ObjectSelected1, 1)
select_obj (SortedRegions, ObjectSelected2, 2)
select_obj (SortedRegions, ObjectSelected3, 3)
union2 (ObjectSelected1, ObjectSelected2, RegionUnion)
union2 (RegionUnion, ObjectSelected3, RegionUnion1)
select_obj (SortedRegions, ObjectSelected4, 4)
select_obj (SortedRegions, ObjectSelected5, 5)
select_obj (SortedRegions, ObjectSelected6, 6)
select_obj (SortedRegions, ObjectSelected7, 7)
select_obj (SortedRegions, ObjectSelected8, 8)
select_obj (SortedRegions, ObjectSelected9, 9)
**把所有区域保存一个对象
gen_empty_obj (EmptyObject)
concat_obj (EmptyObject, RegionUnion1, EmptyObject)
concat_obj (EmptyObject, ObjectSelected4, EmptyObject)
concat_obj (EmptyObject, ObjectSelected5, EmptyObject)
concat_obj (EmptyObject, ObjectSelected6, EmptyObject)
concat_obj (EmptyObject, ObjectSelected7, EmptyObject)
concat_obj (EmptyObject, ObjectSelected8, EmptyObject)
concat_obj (EmptyObject, ObjectSelected9, EmptyObject)
****创建训练文件
TrainFile:./Charactor.trf
Words:[苏,E,C,6,2,N,8]
* 完成图像与字符训练对应关系
write_ocr_trainf (EmptyObject, GrayImage1, Words, TrainFile)
* 读取训练文件
read_ocr_trainf_names (TrainFile, CharacterNames, CharacterCount)
* 创建一个分类识别器
create_ocr_class_mlp (8, 10, constant, default, CharacterNames, 80, none, 10, 42, OCRHandle)
* 训练分类识别器
trainf_ocr_class_mlp (OCRHandle, TrainFile, 200, 1, 0.01, Error, ErrorLog)
* 保存分类文件
*write_ocr_class_mlp (OCRHandle, ./Charactor.omc)
**训练omc开始识别带中文车牌
read_ocr_class_mlp (./Charactor.omc, OCRHandle1)
do_ocr_multi_class_mlp (EmptyObject, GrayImage1, OCRHandle1, Class, Confidence)
dev_clear_window ()
dev_set_color (red)
set_display_font (WindowHandle,30, mono, true, false)
for Index:0 to |Class|-1 by 1set_tposition (WindowHandle, 30, 12040*Index)write_string (WindowHandle, Class[Index])
endfor