老实了解了灰度化的原理:
灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度。
可以通过下面几种方法,将图像转换为灰度:
- 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11
- 2.整数方法:Gray=(R*30+G*59+B*11)/100
- 3.移位方法:Gray =(R*76+G*151+B*28)>>8;
- 4.平均值法:Gray=(R+G+B)/3;
- 5.仅取绿色:Gray=G;
通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。即是,R,G,B三色值相等成为灰度图。
图像的二值化处理就是将图像上的点的灰度值置为0或255,也就是将整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的
阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于在对图像做进一步处理时,图像的集合性质只与
像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级
灰度值的均匀背景下,使用阈值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如
纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阈值选取技术来分割该图像。动态调节阈值实现图像的二值化可动态观察其分割图像的具体结果。
说白了就是将灰度图像,根据阈值划分为黑和白。大于阈值为黑色,小于阈值为白色。
import tesserocr from PIL import Image from numpy import array image = Image.open("check.png") result = tesserocr.image_to_text(image) print('之前:' + result) threshold = 40 def book_clear(image, threshold): image = image.convert("L")#灰度化,采用(R+G+B)/3的到R,G,B三色。 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) img = image.point(table, "1")#二值化 img.save("img1.jpg") img.show() result = tesserocr.image_to_text(img) print('之后:' + result) book_clear(image, threshold)