首页 > 解决方案 > 转换颜色空间时 OpenCV 中的图像尺寸错误

问题描述

我有 2 个相同的数组,一个通过简单地读取图像并使用

img = cv2.imread(path)
array_1 = cv2.cvtColor(img, cv2.COLOR_BGR2Lab)

和其他由

from torchvision import transforms
transform = transforms.Compose([
    transforms.Lambda(lambda img: cv2.cvtColor(img, cv2.COLOR_BGR2Lab)),
    transforms.Lambda(lambda img: np.array(img)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])

img_scaled = img * 1./255
img_lab_norm = transform(img).permute(1,2,0).numpy()
array_2 = (((img_lab_norm + 1) / 2)*255).astype(np.int)
img_rec_norm = cv2.cvtColor(array_2, cv2.COLOR_Lab2RGB)

出于某种原因,该cv2.cvtColor(array, cv2.COLOR_Lab2RGB)array_1工作并array_2引发此错误

> Unsupported depth of input image:
>     'VDepth::contains(depth)'
> where
>     'depth' is 4 (CV_32S)

(array_2 == array_1).all()退货True 我不知道为什么 OpenCV 对待array_2它有 4 个维度。

标签: pythonopencvimage-processingpytorchcolor-space

解决方案


推荐阅读