温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用python求出图片每一个像素的RGB颜色

发布时间:2021-09-03 16:54:55 来源:亿速云 阅读:630 作者:chen 栏目:大数据

本篇内容介绍了“如何使用python求出图片每一个像素的RGB颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

工具:

pillow库

如果你有PyCharm的话,可以在Preferences内的Project Interpreter中安装pillow.

若你没有PyCharm.请上网查阅安装流程,非常简单。

几个要用到的比较重要的函数(你可以先跳过,遇到不认识的函数再回来查看):

建议直接阅读PIL的英文文档:http://effbot.org/imagingbook/image.htm


1.image.new(mode,size,color)

使用给定的变量mode和size生成新的图像。mode是图片模式,如"RGB"、"P"。Size是给定的宽/高二元组,这是按照像素数来计算的。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。


2.im.convert(mode)

将你打开的图片转化为某种格式。


3.im.getpixel(xy)

返回给定位置的像素。


4.im.putpixel(xy,color)

修改给定位置的像素。



5.im.size()

返回两个元素,宽和高。im.size ⇒ (width, height)

若是变量名.size[0]则便是是宽,size[1]则表示是高

使用的图片:

如何使用python求出图片每一个像素的RGB颜色

from PIL import Image

im = Image.open("1.jpg")

for y in range(im.size[1]):
   for x in range(im.size[0]):
       pix = im.getpixel((x,y))
       print(pix)

运行结果很长,我们截取一部分:

如何使用python求出图片每一个像素的RGB颜色

不得不说Python实在很强大。

不过这样看实在很麻烦,因为像素这么多,我们不可能手动地去分析数据。

如果我们要算出RGB各个位低于100的数量,我们可以这样做:

from PIL import Image
im = Image.open("1.jpg")
count = 0
for y in range(im.size[1]):
   for x in range(im.size[0]):
       pix = im.getpixel((x,y))
       if(pix[0] < 100 and pix[1] < 100 and pix[2] < 100):
           count = count + 1
print(count)

结果是265743.

我们甚至可以把它们转换成别的颜色。

最好是不在原图上操作,我们new一个一样大小的图片即可。

im2 = Image.new("RGB",im.size,255)

意思是新建一个跟它一样大的RGB图片,背景颜色为红色。

我们把刚刚各个位低于100的像素转化为白色。

from PIL import Image
im = Image.open("1.jpg")
im2 = Image.new("RGB",im.size,255)
count = 0
for y in range(im.size[1]):
   for x in range(im.size[0]):
       pix = im.getpixel((x,y))
       if(pix[0] < 100 and pix[1] < 100 and pix[2] < 100):
           im2.putpixel((x,y),(255,255,255))
im2.show()

结果:

如何使用python求出图片每一个像素的RGB颜色

如果我们对原图进行修改颜色:

如何使用python求出图片每一个像素的RGB颜色

嘛,还是可以接受的。


“如何使用python求出图片每一个像素的RGB颜色”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI