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]])

猜你喜欢

转载自blog.csdn.net/threestooegs/article/details/126388663