我正在尝试找到一种方法,如何在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)