Разделите группу на другую, используя img.split()
У меня есть 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()
1 ответ
Решение
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()
Я не уверен, что это то, что вы пытаетесь достичь, надеюсь, это поможет.