python图像三通道和单通道互转

三通道转单通道
三通道转单通道很简单,使用cv2读取图像的时候指定读取图像格式为 cv2.IMREAD_GRAYSCALE就可以,但是用imwrite进行存图

import cv2
import numpy as np
img = cv2.imread('./duola.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('new_duola.jpg',img)

print(img.shape)

下面是关于cv2.imread()函数的参数

单通道转三通道

expand_dims(img,axis=0)
下面是关于这个函数axis插入纬度的一些理解
当处理是一纬数组时,可以插入一个纬度变成二纬,这个纬度可以插入在x轴(axis=0)或y轴(axis=1)位置,当插入在x轴原来的一纬数组数据变为列方向数据,当插入在y轴原来的数组变成行方向数据。

import numpy as np
x = np.array([1,2,3,4,5,6])
print(x)
print(x.shape)
y = np.expand_dims(x,axis=0)
print(y)
print(y.shape)
z = np.expand_dims(x,axis=1)
print(z)
print(z.shape)
numpy.concatenate((a1,a2,...), axis=0)
axis=0 表示从行上拼接
axis=1 表示从列上拼接
a=np.array([1,2,3])
b=np.array([11,22,33])
c=np.array([44,55,66])
np.concatenate((a,b,c),axis=0)  # 默认情况下,axis=0可以不写

array([ 1, 2, 3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果

a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,21,31],[7,8,9]])
np.concatenate((a,b),axis=0)

array([[ 1, 2, 3],
[ 4, 5, 6],
[11, 21, 31],
[ 7, 8, 9]])

np.concatenate((a,b),axis=1)  #axis=1表示对应行的数组进行拼接

array([[ 1, 2, 3, 11, 21, 31],
[ 4, 5, 6, 7, 8, 9]])

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值