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