图片通道转换
import os
import cv2
def image3to1(path):
"""
三通道图像转换成一通道,保存到自定义文件夹中
:param path: 输入图像路径
:return:
"""
# 获取绝对路径
path = os.path.abspath(path)
# 读取图像,确保是三通道图像
img = cv2.imread(path)
if img is not None and len(img.shape) == 3 and img.shape[2] == 3:
# 将三通道图像转换为灰度图像(一通道)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建保存目录
save_dir = os.path.join(os.path.dirname(path), '1_channel_images')
os.makedirs(save_dir, exist_ok=True)
# 保存一通道图像
save_path = os.path.join(save_dir, os.path.basename(path))
cv2.imwrite(save_path, gray_img)
print(f"三通道图像已转换为一通道并保存到:{save_path}")
else:
print(f"无法处理 {path}:文件不存在或不是三通道图像")
def image1to3(path):
"""
一通道图像转换成三通道,保存到自定义文件夹
:param path: 输入图像路径
:return:
"""
# 获取绝对路径
path = os.path.abspath(path)
# 读取图像,确保是单通道图像
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
if img is not None:
# 将一通道图像转换为三通道图像
three_channel_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
# 创建保存目录
save_dir = os.path.join(os.path.dirname(path), '3_channel_images')
os.makedirs(save_dir, exist_ok=True)
# 保存三通道图像
save_path = os.path.join(save_dir, os.path.basename(path))
cv2.imwrite(save_path, three_channel_img)
print(f"一通道图像已转换为三通道并保存到:{save_path}")
else:
print(f"无法处理 {path}:文件不存在或不是单通道图像")
def main():
image_path = r'E:\programs\Image_chanl\image\1_channel_images\a3.png'
# 如果路径是一个文件
if os.path.isfile(image_path):
print("3 to 1")
# image3to1(image_path)
image1to3(image_path)
# 如果路径是一个文件夹,对文件夹内每一个文件执行操作
elif os.path.isdir(image_path):
for file in os.listdir(image_path):
img_path = os.path.join(image_path, file)
image3to1(img_path)
else:
print("文件错误!")
if __name__ == '__main__':
main()
print("end!")