0

我有一个 24 位 jpeg 图片,我正在尝试操作。我想将红色波段除以绿色波段(然后从 0 标准化到 255)。然后合并 g=0 和 b=0 的波段。我曾尝试使用 img.split() 和 img.merge() 方法,但它不起作用。最后我也想把它改成 8 但是。我相信 img.convert('L') 会做到的。有人可以帮帮我吗?

import Image

img = Image.open("M10.jpg")
img.convert("RGB") 

r,g,b=img.split()
p=r/g
g=g.point(lambda i:i*0)
b=b.point(lambda i:i*0)
out=Image.merge('RGB',(p,g,b))
out.show()
4

1 回答 1

0
import Image

#load image, get bands and pixel arrays
img = Image.open('sample.jpg')
r,g,b = img.split()
r_array = r.load()
g_array = g.load()
b_array = b.load()
x,y = r.size

#divide red band by green band (+1 to prevent divide by 0)
for i in xrange(x):
  for j in xrange(y):
    r_array[i, j] /= (g_array[i, j] + 1)

#normalize red band, set green and blue to 0
scalar = 255.0 / r.getextrema()[1]
for i in xrange(x):
  for j in xrange(y):
    r_array[i, j] *= scalar
    g_array[i, j] = 0 
    b_array[i, j] = 0 

#merge the bands
img = Image.merge('RGB', (r, g, b)) 
img = img.convert("P", palette=Image.ADAPTIVE, colors=8)
img.show()

我不确定这是否是您要完成的工作,希望对您有所帮助。

于 2013-09-10T15:21:06.450 回答