0

我知道 cv2 函数 split() 和 merge()。在使用此功能拆分列表中的多个图像时,我需要一些帮助。我有一个包含图像的列表。图像都是 numpy 数组。它们采用 YCrCb 格式,基本上是 3 通道格式。

我想使用 cv2.split() 将每个图像分成 Y、Cr、Cb 通道

我正在尝试运行这样的 for 循环:

for index, item in enumerate(imgSet):
    imageChannel.append(cv2.cvtColor(item, cv2.COLOR_BGR2YCR_CB))
for index_, item_ in enumerate(imageChannel):
    Y, Cr, Cb = cv2.split(item_)

这是行不通的。它返回一个 Y 通道,而不是每个图像的 12 个(列表中的总图像)Y 通道。

编辑:换句话说,我有 numpy 形状数组,(12,224,224,3)其中有 12 个图像,每个图像大小为 224x224 和 3 个颜色通道。我想访问频道并使用 cv2 拆分它们。

我的目标是将列表中的每个图像分成 3 个通道。请帮忙。

4

1 回答 1

0

Y, Cr, 和Cb是单个变量,您的循环会反复覆盖它们。

for index, item in enumerate(imgSet):
    imageChannel.append(cv2.cvtColor(item, cv2.COLOR_BGR2YCR_CB))
Y = [None]*12
Cr = [None]*12
Cb = [None]*12
for index_, item_ in enumerate(imageChannel):
    Y[index_], Cr[index_], Cb[index_] = cv2.split(item_)
于 2017-09-29T21:28:15.423 回答