将图像转换为CMYK并在OpenCV中拆分通道

qq24tv8q  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(308)

我试图找到一种方法,如何转换图像到CMYK的OpenCV。默认情况下,图像是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()
enxuqcxy

enxuqcxy1#

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

相关问题