Python怎么输出一幅图像每个点的像素值?

Python016

Python怎么输出一幅图像每个点的像素值?,第1张

我是用PIL这个库,用opencv的库也可以

from PIL import Image

img=Image.open("demo.jpg")

img_array=img.load()

然后就可以通过img_array[x,y]来读取像素值了

另外img.size查看图片大小,也可以通过img_array[x,y]=(11,22,33)来设置RGB像素值

生成一张纯色的图片

先设置图片的颜色,接着利用Image模块的new方法新生成一张图片,png格式的图片需要设置成rgba,类似的还有rgb,L(灰度图等),尺寸设定为640,480,这个可以根据自己的情况设定,颜色同样如此。

批量生成图片

上面生成了一张图片,那要生成十张图片呢,这种步骤一样,只是颜色改变的,利用循环就可以解决。首先创建一个颜色列表,把要生成的图片颜色放进去。接着循环获取不同的颜色,保存的时候利用字符串拼接的方法改变图片的名字。

本地生成的图片

封装成函数

前面的方法已经可以批量生成图片了,为了通用性强一点,我们可以封装成函数,把哪些可以改变的参数单独抽离出来。尺寸也同样,使用的时候,可以根据自己的需要定义颜色列表和尺寸。当然还有加一些提示用语和报错兼容性,这里就不讲了。

本地生成的图片

用image模块更直接,可以用getpixel获得像素值,给你个例子吧。

01.#!/usr/bin/env python

02.import Image

03.import sys

04.im = Image.open(sys.argv[1])

05.width = im.size[0]

06.height = im.size[1]

07.print "/* width:%d */"%(width)

08.print "/* height:%d */"%(height)

09.count = 0

10.for h in range(0, height):

11. for w in range(0, width):

12.pixel = im.getpixel((w, h))

13.for i in range(0,3):

14. count = (count+1)%16

15. if (count == 0):

16.print "0x%02x,/n"%(pixel[i]),

17. else:

18.print "0x%02x,"%(pixel[i]),