python读取图片,并获取每个像素点的二进制值-二进制文件

python读取图片,并获取每个像素点的二进制值-二进制文件

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算法,自动识别图片中的字符或者数字。

推荐阅读