python - 转换颜色空间时 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 个维度。
解决方案
推荐阅读
- javascript - 使用带有 for 循环和鼠标单击的 Switch 语句来更改大小写返回的数据
- javascript - NextJs 包括 JQuery 和我自己的 JQuery 代码,有时我的代码先运行并且找不到 jquery
- c++ - 显示整个堆栈时,仅显示堆栈的最后一个元素。为什么?
- python - 在 Mac 上设置环境变量
- php - 在 laravel 7 中向控制器添加功能
- javascript - 如何更改 JS 中的字体大小以适应其容器?
- python - Pandas 使用列索引读取/写入 Parquet 数据
- matlab - matlab中前2个数字的总和
- mysql - 是否可以在没有重复记录的情况下连接多个与主表具有一对多关系的表?
- python - 如何将输入层链接到 tensorflow-hub?