繁体   English   中英

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

[英]Convert Image to CMYK and split the channels in 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM