牛奶盒喷码字符识别(基于opencv)————(一)图片预处理

牛奶盒喷码字符识别(基于opencv)————(一)图片预处理


我的环境:
Win 10
python 3.6.3

import cv2
import numpy as np
import math

效果:

还是老规矩,先上图
在这里插入图片描述
在这里插入图片描述
不受光照影响,噪点完全消除。

要做到高识别率的话,我先给大家分析一下难点:(避坑指南)
1.杂点太多,会影响分割
2.亮度不一,会影响阈值处理
3.断点字符,影响分割和识别

开始吧!

图片预处理:

这一点非常重要,图片处理不当,无法分割字符直接影响到后续的操作。
步骤:

1. 原图去噪二值化:

这里我直接使用中值滤波函数,然后阈值处理(为了避免光照影响,必须采用自适应阈值cv2.adaptiveThreshold函数,参数可根据自己实际情况调整)

	img=cv2.medianBlur(img,5)
	img = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,101,41) 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 再一次去噪:

可以发现我们已经去除了大部分噪点,但是还是有一些漏网之鱼,我们对原图在进行一次闭运算,选用椭圆核

	kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(9, 9))
	img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel1)

在这里插入图片描述
在这里插入图片描述

3. 膨胀

由于切割算法基于每一行,每一列的像素投影,断点会影响切割效果,所以进行膨胀操作,依然选择椭圆核

	kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(6, 6))
	img = cv2.erode(img, kernel)

在这里插入图片描述

到这里,已经完全去除了噪声影响,可以进行下一步分割了。
想了想 还是分为三篇写吧,增加一些文章数 哈哈

猜你喜欢

转载自blog.csdn.net/qq_38269418/article/details/83662092