将图像转换为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()

您可以导入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)

最新更新