读取图像
from pathlib import Path
import cv2
import numpy as np
path_img = Path(r'Morphling.jpg') # 原始图像路径
img_raw = cv2.imread(str(path_img), flags=-1)
print(f'原始图像尺寸:{img_raw.shape}, 深度:{img_raw.dtype}')
cv2.imshow('原始图像', img_raw)
cv2.waitKey()
输出:
原始图像尺寸:(576, 1024, 3), 深度:uint8
通道的存储顺序为:BGR
关于flags参数的说明
cv2.IMREAD_UNCHANGED = -1, 返回原通道原深度图像
cv2.IMREAD_GRAYSCALE = 0, 返回单通道(灰度),8位图像
cv2.IMREAD_COLOR = 1, 返回三通道,8位图像,为默认参数
cv2.IMREAD_ANYDEPTH = 2, 返回单通道图像。如果原图像深度为16/32位,则返回原深度,否则转换为8位
cv2.IMREAD_ANYCOLOR = 4, 返回原通道,8位图像。
图像类型转换
img_gray = cv2.cvtColor(img_raw, cv2.COLOR_BGR2GRAY)
print(f'转换后图像尺寸:{img_gray.shape}, 深度:{img_gray.dtype}')
cv2.imshow('灰度图像', img_gray)
cv2.waitKey()
输出:
转换后图像尺寸:(576, 1024), 深度:uint8
常用的转换方法
cv2.COLOR_BGR2BGRA = 0,
cv2.COLOR_RGB2RGBA = COLOR_BGR2BGRA,
cv2.COLOR_BGRA2BGR = 1,
cv2.COLOR_RGBA2RGB = COLOR_BGRA2BGR,
cv2.COLOR_BGR2RGBA = 2,
cv2.COLOR_RGB2BGRA = COLOR_BGR2RGBA,
cv2.COLOR_RGBA2BGR = 3,
cv2.COLOR_BGRA2RGB = COLOR_RGBA2BGR,
cv2.COLOR_BGR2RGB = 4,
cv2.COLOR_RGB2BGR = COLOR_BGR2RGB,
cv2.COLOR_BGRA2RGBA = 5,
cv2.COLOR_RGBA2BGRA = COLOR_BGRA2RGBA,
cv2.COLOR_BGR2GRAY = 6,
cv2.COLOR_RGB2GRAY = 7,
cv2.COLOR_GRAY2BGR = 8,
cv2.COLOR_GRAY2RGB = COLOR_GRAY2BGR,
cv2.COLOR_GRAY2BGRA = 9,
cv2.COLOR_GRAY2RGBA = COLOR_GRAY2BGRA,
cv2.COLOR_BGRA2GRAY = 10,
cv2.COLOR_RGBA2GRAY = 11,
将图像转换为16位并保存
img_16bit = img_raw.astype(np.uint16)*255
print(f'转换后图像尺寸:{img_16bit.shape}, 深度:{img_16bit.dtype}')
cv2.imwrite('img_16bit.png', img_16bit)
输出:
转换后图像尺寸:(576, 1024, 3), 深度:uint16