Решение Джо еще лучше, я обдумывал это. :)

я есть изображение, где цвета BGR. Как я могу эффективно преобразовать свое изображение PIL, чтобы поменять местами элементы B и R каждого пикселя?

 Akshay L Aradhya04 апр. 2017 г., 13:16
Можете ли вы выбрать ответ по @ martin-beckett

Ответы на вопрос(1)

Решение Вопроса

что нет альфа-группы, не так ли просто?

b, g, r = im.split()
im = Image.merge("RGB", (r, g, b))

Редактировать:

Хм ... Кажется, у PIL есть несколько ошибок в этом отношении ...im.split() похоже, не работает с последними версиями PIL (1.1.7). Может (?) Все еще работать с 1.1.6, хотя ...

В качестве альтернативы, если у вас есть NumPy, вы можете использовать его для этого: (Опять же, я предполагаю, что RGB-изображение здесь,не изображение RGBA!):

data = np.asarray(im)
im = Image.fromarray(np.roll(data, 1, axis=-1))

Еслиim.split() будет просто работать, это, безусловно, более простой и читаемый вариант!

 Geoff04 апр. 2011 г., 18:51
np.roll отлично, спасибо.
 Claudiu12 янв. 2011 г., 00:13
ахnp.roll может сделать трюк
 avocado18 мар. 2017 г., 06:06
этот ответ неверен, вопрос rgb-> bgr, ....
 Luke Yeager13 апр. 2015 г., 21:34
np.roll преобразует BGR в RBG, а не RGB. Если вы хотите сделать это в NumPy, вы можете использоватьdata[...,[2,1,0]] поменять каналы. Но если вы уже используете OpenCV или PIL, просто ответьте на вопрос Мартина Беккета.
 Claudiu03 февр. 2011 г., 19:53
решение состояло в том, чтобы загрузить изображение должным образом во-первых = P, но это кажется прекрасным

Ваш ответ на вопрос