对于图片字符提取这部分一共有两个个方案,第一个方案是针对于正常无杂点的图片,第二、三个方案是针对于存在杂点影响的图片,该杂点是指在喷墨打印时遗漏墨点,而非水滴。
三个方案均是通过最小矩形对半裁剪,生成日期最小矩形和时间最小矩形,通过对矩形的长判断瓶子的正反方向,然后纠偏识别。
大体步骤:1.读取图片
2.图像预处理(阈值分割,提取标签部分,缩小处理区域)
3.将标签区域的最小外接矩形,从原图中剪切
4.获取最小矩形的中心坐标,通过坐标和长宽将矩形一分为二
5.两个矩形裁剪生成最小矩形,通过长度判断正反
6.纠偏
7.创建词典(之所以不直接使用字符模板直接识别,是因为,直接识别的话,字母O会被识别为数字0 等等异常识别,使用字典会比较准确识别)
8.读取识别模板
9.使用字典进行识别
关键点:字典 局部阈值分割 最小外接矩形
注意点:halcon字符识别自带模板是基于白底黑字 ,输入的图像要进行转换 保证是二值化图像 并且是白底黑字,
如果是黑底白字,使用算子 invert_image 进行图像翻转。
对图像明亮部分进行阈值提取,筛选,填充内部空洞,裁剪,从而缩小处理区域
dev_get_window (WindowHandle) ocr_train_file:='F:/train.trf' ocr_mlp_file:='F:/mlp.omc' *缩小范围 read_image (Image, 'D:/resource/picture/12.bmp') threshold (Image, Region, 200, 255) connection (Region, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 200000, 1000000) fill_up (SelectedRegions, RegionFillUp) reduce_domain (Image, RegionFillUp, Image)
因为其他图片暂时不在电脑上,先暂时用不合格照片进行演示,但用该方法一样可以识别,如果图片打光效果好,可以省略筛选步骤
对图像提取,膨胀,生成最小外接矩形,对图像和矩形的角度进行仿射变换,水平放置
*对缩小区域进行阈值分割
threshold (Image, Region1, 0, 90)
*膨胀
dilation_circle (Region1,