我正在尝试分析图片。我基本上分两步完成:
- 将其转换为灰度图片
- 拍摄照片中的区域并查看它们是否更有可能是白色或黑色
我的程序在大多数情况下运行良好,但不是全部。那主要是因为我从来没有真正理解,如何将图片转换为黑白。我主要复制了我找到的代码并通过反复试验使其工作(这就是为什么我最终使用灰度而不是黑白,因为我没有找到如何将灰度中的每个非白色像素变为黑色)
我正在使用 PIL 进行图片操作,图片操作的主要功能如下所示(convert() 使用一次,avgcol() 用于转换后图片的每个部分,我想分析一下)
def convert():
global im
matrix = (1.412453, 0.357580, 0.180423, 0,
0.212671, 0.715160, 0.072169, 0,
0.019334, 0.119193, 0.950227, 0 )
im = im.convert("L", matrix)
def avgcol(im):
p_colors=im.getcolors()
cnt_pix=(im.size[0])*(im.size[1])
avgpix=0
for i in range(len(p_colors)):
avgpix=avgpix+p_colors[i][0]*p_colors[i][1]
return round(avgpix/cnt_pix , 1)
我真的不知道矩阵的作用(没有找到解释单个值的站点)。我现在的具体问题是,我想将绿色过多的像素转换为白色像素,但我很确定,如果解决了,就会弹出其他东西,所以一些基本的解释,这样的事情是怎样的完成,会很棒。但我感谢任何指向正确方向的指针。并且请不要使用 for 循环每个像素的解决方案。图片很大,程序应该很快。