我试图拉出R,G,B,Black和&的总像素数。预制图片中的白色值。这张照片有100红色,100绿色,100蓝色,100黑色和100白色。
我已经开始使用我的代码,但出于某种原因,似乎我的代码只计算了1个像素.. Jython预定义了16种颜色,所以我使用的是红色,蓝色,绿色数据类型。
这是我到目前为止所做的:
def main():
file = pickAFile( )
pic = makePicture( file )
pxRed = 0
pxGreen = 0
pxBlue = 0
numR = 0
numG = 0
numB = 0
printNow("Now let's count some pixels...")
for px in getPixels( pic ):
r = getRed(px)
g = getGreen(px)
b = getBlue(px)
If px is (255,0,0): #error here
numR += 1
printNow("You have " + numR + " red pixels")
show(pic)
不确定为什么这不起作用..
答案 0 :(得分:1)
您不需要单独获取颜色。
您可以使用getColor(px)
- 函数。
此外,python中没有函数printNow(str)
。因此,只要此函数不是您使用的任何包的一部分,您就需要使用print(str)
函数getColor
返回一个像Color(255,0,0)
这样的对象来比较它,你不能只与一个元组进行比较,但想要使用JES中的distance
函数。因此,您需要创建一个Color
对象进行比较,例如red = makeColor(255,0,0)
,然后与此进行比较。 distance
函数的可能输出范围从0(完全相同的颜色)到~441.7(黑色与白色相比)。
所以试试这样:
red = makeColor(255,0,0)
green = makeColor(0,255,0)
blue = makeColor(0,0,255)
for px in getPixels( pic ):
color = getColor(px)
if distance(color, red) == 0:
numR += 1
elif distance(color, green) == 0:
numG += 1
elif distance(color, blue) == 0:
numB += 1
print("You have " + numR + " red pixels")
print("You have " + numG + " green pixels")
print("You have " + numB + " blue pixels")
我猜测你计算后需要总数。如果你想在迭代时输出数字,只需将打印放回循环中。