我刚开始学习python。
我将图像转换为灰色像素矩阵(0 =黑色,255 =白色)
from PIL import Image
import numpy
import array
im = Image.open("elephant.jpg")
grayim = im.convert('L')
pixelmatrix = numpy.asarray(grayim)
如果我
print pixelmatrix
我得到类似的东西:
pixelmatrix = [154 154 154 ..., 169 169 169]
[153 153 153 ..., 166 166 166]
[153 153 153 ..., 161 161 161]
...,
[151 130 107 ..., 51 85 75]
[130 133 111 ..., 86 92 56]
[ 91 127 119 ..., 102 139 66]]
这就是我要找的东西。确定
我想要做的是评估一个值的出现,比方说255。
我尝试了循环和.count方法。
for x in range(0, lastrow):
for y in range(0, lastcolumn):
print sum(pixelmatrix[x,y]
他们不工作,我不明白为什么。你能帮帮我吗?
非常感谢 侨
贾科莫
答案 0 :(得分:3)
您可以使用sum
。
def pixel_frequency(value, image):
return (image == value).sum()
pixel_frequency(255, pixelmatrix)
# 137 (or something)
答案 1 :(得分:2)
from PIL import Image
import numpy
import array
im = Image.open("elephant.jpg")
grayim = im.convert('L')
pixelmatrix = numpy.asarray(grayim)
no_occurrences = numpy.sum(pixelmatrix==255)
print(no_occurrences)
编辑:删除了代码段中的冗余步骤并添加了print语句。
答案 2 :(得分:1)
假设您正在谈论实际的列表清单(您的帖子中缺少一些逗号,这就是我说这个的原因),请尝试:
numOccurrences = sum([row.count(255) for row in pixelmatrix])