# import cv2 # # 必须加上 cv2.IMREAD_UNCHANGED,原封不动地读取 # img = cv2.imread('/home/wenting/zr/wt_dataset/LIDC_IDRI/img_complex_fb_256/LIDC-IDRI-0001/0002.png', cv2.IMREAD_UNCHANGED) # # 通过查看数据的类型 (dtype) 来判断 # if img.dtype == 'uint8': # print("这是一张 8 位图像 (像素值范围 0-255)") # elif img.dtype == 'uint16': # print("这是一张 16 位图像 (像素值范围 0-65535)") # else: # print(f"其他格式: {img.dtype}") # print(f"图像形状: {img.shape}") # # 如果是 (H, W),说明是单通道灰度图;如果是 (H, W, 3),说明是彩色图 import cv2 def check_image_channels_cv2(image_path): # 使用 IMREAD_UNCHANGED 保持图像原有通道数读取 img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) if img is None: return "错误:无法读取图像,请检查路径。" # 判断维度长度 if len(img.shape) == 2: return "该图像是单通道(灰度图)。" elif len(img.shape) == 3: channels = img.shape[2] if channels == 3: return "该图像是三通道(RGB/BGR)。" elif channels == 4: return "该图像是四通道(包含透明通道的 RGBA/BGRA)。" else: return f"该图像有 {channels} 个通道。" else: return "未知的图像格式。" # 测试脚本 result = check_image_channels_cv2("/home/wenting/zr/dataset/OmniGenCXR_inference/outputs/1024_256_7events_lora6000_50steps/0a6a34da-654c2878-8cc9db4d-0787bc5d-3dccbe79.png") print(result)