我知道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通道。
编辑:换句话说,我有一个形状(12,224,224,3)
的numpy数组,其中有12个图像,每个图像的大小为224x224和3个颜色通道。
我想访问频道并使用cv2分割它们。
我的目标是将列表中的每个图像分成3个通道。 请帮忙。
答案 0 :(得分: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_)