python-PIL旋转图像颜色(BGR-> RGB)

我有一幅颜色为BGR的图像。 如何转换我的PIL图像以有效地交换每个像素的B和R元素?

9个解决方案

92 votes

只是添加一个更新的答案:

现在,使用新的cv2接口加载的图像会自动成为numpy数组。

但是openCV cv2.imread()将图像加载为BGR,而numpy.imread()将图像加载为RGB。

转换的最简单方法是使用openCV cvtColor。

import cv2

srcBGR = cv2.imread("sample.png")

destRGB = cv2.cvtColor(srcBGR, cv2.COLOR_BGR2RGB)

Martin Beckett answered 2020-08-04T20:10:45Z

79 votes

我知道这是一个老问题,但是我遇到了同样的问题,并通过以下方法解决了问题:

img = img[:,:,::-1]

Peter9192 answered 2020-08-04T20:11:05Z

23 votes

假设没有阿尔法谱带,难道就这么简单吗?

b, g, r = im.split()

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

编辑:

嗯...在这方面,PIL似乎有一些错误... 299698285821821010304似乎不适用于最新版本的PIL(1.1.7)。 它可能(?)仍可与1.1.6一起使用,但是...

Joe Kington answered 2020-08-04T20:10:12Z

7 votes

这是我最好的答案。 顺便说一下,这也适用于Alpha。

from PIL import Image

import numpy as np

import sys

sub = Image.open(sys.argv[1])

sub = sub.convert("RGBA")

data = np.array(sub)

red, green, blue, alpha = data.T

data = np.array([blue, green, red, alpha])

data = data.transpose()

sub = Image.fromarray(data)

sberry answered 2020-08-04T20:11:25Z

4 votes

import cv2

srcBGR = cv2.imread("sample.png")

destRGB = cv2.cvtColor(srcBGR,cv2.COLOR_BGR2RGB)

只是为了澄清Martin Beckets的解决方案,我无法发表评论。您需要cv2。 前面的颜色常数。

user2692263 answered 2020-08-04T20:11:45Z

2 votes

使用省略号添加解决方案

...

在这种情况下,省略号...等效于:,:,而::-1则反转最后一个维度(通道)的顺序。

azygous answered 2020-08-04T20:12:09Z

1 votes

使用之前解释的想法...使用numpy可以。

bgr_image_array = numpy.asarray(bgr_image)

B, G, R = bgr_image_array.T

rgb_image_array = np.array((R, G, B)).T

rgb_image = Image.fromarray(rgb_image_array, mode='RGB')

此外,它可以删除Alpha通道。

assert bgra_image_array.shape == (image_height, image_width, 4)

B, G, R, _ = bgra_image_array.T

rgb_image_array = np.array((R, G, B)).T

BlaZerTech answered 2020-08-04T20:12:33Z

1 votes

im = Image.frombuffer('RGB', (width, height), bgr_buf, 'raw', 'BGR', 0, 0)

Andrei Antonov answered 2020-08-04T20:12:49Z

0 votes

您应该能够使用ImageMath模块执行此操作。

编辑:

乔的解决方案更好,我想得太多。 :)

Amber answered 2020-08-04T20:13:17Z

python bgr转rgb_python-PIL旋转图像颜色(BGR- RGB)相关推荐

  1. 【Python学习】 - 使用PIL, cv2, keras.preprocessing, scipy.imageio, matplotlib.image, skimage读取和保存图像的方法

    python中图像处理相关库有很多,这里简单介绍PIL.cv2.scipy.imageio .matplotlib.image.skimage等常用库,其中PIL库使用最方便,cv2库功能最强大. P ...

  2. python+opencv多进程实现识别魔方颜色,通过kociemba算法得出算法字符串并画图(附毕设完整视频)

    完整毕设成果视频如下: 本科毕业设计转魔方(声音略大) python+opencv本科毕业设计转魔方(声音略大) 上一篇博客已经给大家讲了鼠标hsv获取魔方颜色阈值方法,具体见 python+open ...

  3. Python图片处理模块PIL(pillow)

    Python图片处理模块PIL(pillow) 本篇包含:一.Image类的属性:1.Format   2.Mode   3.Size    4.Palette    5.Info           ...

  4. python中opencv 与 PIL读图区别,以及与Numpy转换

    之前在图片预处理上就遇到过opencv和PIL,很纠结PIL读取的图片不好在opencv上使用,或者是opencv读取的图片不好在PIL上使用,以及它们如何转换为numpy类型.现在有时间,做个小实验 ...

  5. python:程序猿的方式在元宵佳节之际,带你设计【东方明珠】动画浪漫烟花秀(python编程利用Tkinter+PIL库)

    python:程序猿的方式在元宵佳节之际,带你设计[东方明珠]动画浪漫烟花秀(python编程利用Tkinter+PIL库) 目录 设计动画展示 设计思路 核心代码 设计动画展示 设计思路 核心代码 ...

  6. python红色的颜色表达式_50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)...

    目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...

  7. python 颜色_如何使用python中matplotlib库分析图像颜色

    用代码分析图像可能很困难.你如何使代码"理解"图像的上下文? 通常,使用AI分析图像的第一步 是找到主要颜色.在如何使用python中matplotlib库分析图像颜色中,我们将使 ...

  8. python自带的PIL库扩展图片大小给图片加上文字描述

    利用python自带的PIL库扩展图片大小给图片加上文字描述.大多都是库函数调用,只是给定图片宽度后计算文字所需行数的代码需要写. 代码比较丑,but it works. #!/usr/bin/env ...

  9. Python中常见的调色板: 颜色 color

    Python中常见的调色板: 颜色 color 这个人对颜色的总结,非常到位哈! https://blog.csdn.net/weixin_42943114/article/details/81811 ...

最新文章

  1. 老司机也晕车--java字符串String晕车之旅
  2. getcwd和pwd为什么不一样_企业职工,公务员为什么缴纳的养老保险不一样呢?
  3. 迁移和升级windows 2003 R2到windows 2008 SP2
  4. 依赖注入 这样的坑游戏编程要谨慎
  5. Java面试中常问的Spring方面问题
  6. /dev/null 21
  7. spring-boot 自定义启动图标彩蛋
  8. 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
  9. codeforces1455 D. Sequence and Swaps
  10. python语言能做什么游戏好玩_太好玩了我用 Python 制作一款小游戏
  11. mysql 查询条数优化_MySQL优化总结-查询总条数
  12. 【廖雪峰官方网站/Java教程】Maven基础
  13. Leetcode 刷题笔记(三) —— 数组类型解题方法三:滑动窗口
  14. ecshop如何增加多个产品详细描述的编辑器
  15. 用c语言写一个求和的程序,用C语言编写一个“等比数列求和”的程序?
  16. 『Mysql』汇总Mysql索引失效的常见场景
  17. 设置图片在Unity中的默认打开方式
  18. 宽带光纤接入网的概念和典型应用类型
  19. js实现农历和公历相互转换(完整demo)
  20. 在网页中创建自己的调试控制台

热门文章

  1. python中浮点单精度用什么表示_不方便在numpy中使用单精度浮点
  2. 网格概念 Gutter
  3. 简单的时序图工具---Markdown
  4. Svn版本控制工具的作用和应用
  5. Qt开发基础(10)——定时器
  6. CSS 设置上下滚动禁止左右滚动
  7. 云原生桌面:虚拟桌面的解构与重新定义
  8. 物联网的基本功能和四种形态
  9. Arcgis中Geodatabase的 Compressing与Compacting (From 萝卜兔子)
  10. html过滤器作用,vue.js过滤器有什么用?