【问题标题】:How to use cv2.split and cv2.merge on multiple images?如何在多个图像上使用 cv2.split 和 cv2.merge?
【发布时间】:2017-09-29 19:03:40
【问题描述】:

我知道 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 个通道。 请帮忙。

【问题讨论】:

    标签: python list numpy cv2


    【解决方案1】:

    YCrCb 是单独的变量,您的循环会反复覆盖它们。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多