python cv2实现改变图像的通道顺序并保存

首先是安装cv2的包 

python中很多包的导包名称和安装包的名称相同,因此安装cv2包时很多人会直接pip install cv2,很显然这是错误的,正确的安装命令:

(base) D:\downloads>pip install opencv-python
Collecting opencv-python
  Downloading opencv_python-4.5.3.56-cp37-cp37m-win_amd64.whl (34.9 MB)
     |████████████████████████████████| 34.9 MB 17 kB/s
Requirement already satisfied: numpy>=1.14.5 in d:\anaconda3\lib\site-packages (from opencv-python) (1.15.1)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.5.3.56

opencv实现改变图像的通道顺序并保存,步骤如下:

step1:读取图像 ,cv2按照BGR的通道顺序读取的图像

import cv2
img = cv2.imread(img_path) #img_path指的是图片路径

其他读取图像的方法都是按RGB方式读取图像,如Image.open() 

 step2:改变图像的颜色通道顺序,有三种方法

# 方法一:分离bgr通道,在进行合并
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])

# 方法二
img2 = img[:, :, (2,1, 0)]
# img2 = img[..., :: -1]

# 方法三 cv2.COLOR_BGR2RGB:表示将bgr图像转成rgb
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

step3:保存图像,有两种方法,一种是利用cv2.imwrite(filename,img),另一种是imageio.imwrite(filename, img)

在保存图像的时候出现一个问题,cv2.imwrite(filename,img)只能保存BGR图像,这是源代码里注释的,因此我这里使用的是imageio.imwrite(filename, img)

 


对于这一点我理解的是:由于cv2读取的是BGR图像,因此保存图像的时候会将BGR图像转换成RGB,即将第一个通道和第三个通道的顺序改变后在保存,这样会保证读取的保存的图像一致,不出错。

下面是一个证明这一点的实验:

import cv2
import imageio

# 由OpenCV读入彩色图像
img = cv2.imread('1.jpeg')
imageio.imwrite('1_1,.jpeg', img)
cv2.imwrite("1_2.jpeg", img)
# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])
imageio.imwrite('1_3,.jpeg', img1)
cv2.imwrite("1_4.jpeg", img1)

结果如下:

1_1.jpeg

1_2.jpeg

  1_3.jpeg

 1_4.jpeg

原图是:

注:如果理解错误,请联系我改正

THANKS A LOT!

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值