要了解复杂的处理算法,值得分析标准方案,我建议从中开始。
对于处理示例,将使用具有不同颜色集的图像:

首先,我们需要两个库模块:
from PIL import Image, ImageDraw
设置用于舒适的未来工作的工具:
image = Image.open('test.jpg')
让我们开始吧
我们将以RGB格式处理图像。 PIL还支持使用格式1,L,P,RGB,RGBA,CMYK,YCbCr,LAB,HSV,I,F。
图像中的像素值以以下格式设置:
(x,y),(red,green,blue) ,其中
x,y是坐标,而RGB的数值在0到255的范围内。也就是说,我们处理
8位图像。 灰阶
在所有调色板均等的情况下,将显示灰色调,因此我们需要获取所有三个点的算术平均值:
for x in range(width): for y in range(height): r = pix[x, y][0]

细微差别人眼以不同的方式感知不同的颜色光谱。 没有人会给您确切的公式,因为每个人对颜色的认识都不同,但是如果您有兴趣,可以
在这里和
这里阅读更多。
反演
反转是通过从255中减去当前颜色获得的:
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] draw.point((x, y), (255 - r, 255 - g, 255 - b))

灰度反转
结合前面的两种算法,可以编写以下代码:
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] sr = (r + g + b) // 3 draw.point((x, y), (255 - sr, 255 - sr, 255 - sr))

选择性灰度反转
对于此算法,您需要确定阈值,我将对它使用100:
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] if (r+g+b)>100:

结论
在接下来的文章中,我想谈谈如何通过将其划分为多个区域来更局部地进行图像过滤,以及在图像处理算法中展示
DFS的有趣可能性