如何在多个图像上使用 cv2.split 和 cv2.merge?
Posted
技术标签:
【中文标题】如何在多个图像上使用 cv2.split 和 cv2.merge?【英文标题】:How to use cv2.split and cv2.merge on multiple images? 【发布时间】: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 个通道。 请帮忙。
【问题讨论】:
【参考方案1】: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_)
【讨论】:
以上是关于如何在多个图像上使用 cv2.split 和 cv2.merge?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 函数学习11-图像通道的拆分(cv2.split)
机器学习进阶-图片基本处理-ROI区域 1.img[0:200, 0:200]截取图片 2.cv2.split(对图片的颜色通道进行拆分) 3. cv2.merge(将颜色通道进行合并) 4 c