python进行图片处理或识别的时候,通常第一步是获取每个像素的二进制值。(python 版本号为3.5)
具体过程如下:
1、如果没有安装image包,则首先需要安装image包。命令:pip3 install image
2、将图片转为二进制图片。
3、获取二进制图片中每个像素点的像素值。
4、将以为数组转化为原像素大小的二维数组。
参考:http://blog.csdn.net/vange/article/details/5395771
LUT: (Look-Up Table)实际上就是一张像素灰度值的映射表,它将实际采样到的像素灰度值经过一定的变换如阈值、反转、二值化、对比度调整、线性变换等,变成了另外一个与之对应的灰度值,这样可以起到突出图像的有用信息,增强图像的光对比度的作用。
示例代码:
import Image
import numpy
img = Image.open("test.webp")
w,h = img.size ##显示像素大小 宽和高
### 注意,此处不能直接转化为黑白,即convert("1"),因为那样会丢失掉一些中间的颜色。如果待处理的字体或图像颜色只包含黑色或白色,而背景颜色为彩色的时候,可以直接转化成黑白颜色。
grayImg =img .convert(''L'') ##转换成灰色照片
#grayImg.save(''grayImg.webp'') ##保存灰色照片
###通过设置阀值,生成一个查找表(lut)
threshold = 80
lut= []
for i in range( 256 ): ## 范围:0-255
if i < threshold:
lut.append(0)
else :
lut.append( 1 )
binaryImg = grayImg.convert(lut, "1") ## 根据查找表,将灰色照片转换为二进制照片
binaryImg.save("binary.webp")
### 获取每个像素点的像素值
pixels = [ (x,y) for x in range(w) for y in range(h) ] ##获取每一个像素点的坐标
pixelVal = [] ##每个像素点对应的值
for point in pixels:
value = binaryImg.getpixel(point)
pixelVal.append(value)
### 将以为数组转化为二维数组,便于分析
biArray = numpy.array(pixelVal).reshape(300,-1) ### 300行,-1表示列数自动判断
通过以上操作,成功的将一个图片中每个像素点对应的值,提取了出来。接下来,就可以对图片进行进一步处理了。
在下一篇文章中,我将分享如何通过svm算法,自动识别图片中的字符或者数字。