首页 > 解决方案 > 将图像转换为 CMYK 并在 OpenCV 中拆分通道

问题描述

我正在尝试找到一种方法如何在 OpenCV 中将图像转换为 CMYK。默认情况下,我认为图像是 BGR,因此转换为灰色图像会是img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 但没有cv2.COLOR_BGR2CMYK. 我发现PIL你可以做到,但在OpenCV中没有办法?

我需要拆分然后基本上像(C, M, Y, K) = cv2.split(image). 有没有这样的方法?

在枕头我可以这样做

im = Image.fromarray(np.array(image))
im = im.convert('CMYK')
c_im, m_im, y_im, k_im = im.split()

标签: pythonopencvcomputer-visionpython-imaging-library

解决方案


您可以导入PIL图像并将其从 BGR 转换为 CMYK,或者在 openCV 中以更“分析”的方式进行。

根据已知的 BGR 和 CMYK 之间的关系,您可以编写如下代码:

 import cv2
 import numpy as np

 bgr = cv2.imread('your_image.jpg') #your bgr image

 bgrdash = bgr.astype(np.float)/255.

 K = 1 - np.max(bgrdash, axis=2)

 C = (1-bgrdash[...,2] - K)/(1-K)

 M = (1-bgrdash[...,1] - K)/(1-K)

 Y = (1-bgrdash[...,0] - K)/(1-K)

这样您就可以拥有 CMYK 拆分通道。要将 BGR 转换为 CMYK:

 CMYK = (np.dstack((C,M,Y,K)) * 255).astype(np.uint8)

推荐阅读