python - 将图像转换为 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)
推荐阅读
- php - 如何将 $root 路径设置为项目文件夹内部?是否应该将整个项目复制到 org.eclipse.wst.server.core\tmp0\htdocs 文件夹并从中运行
- java - Java中的标准输出为空
- java - 如何将游戏升级到下一个级别
- javascript - 具有非常特殊字符的字符串会导致问题
- python - 如何使用pygame检查同时按下的两个键盘键?
- excel - 重新打开 ScreenUpdating 时有没有办法防止屏幕闪烁?
- keyboard - 在用户按下“Esc”后结束程序之前,我的程序正在打印“为了访问身份验证代码,...”
- php - 通过 .htaccess 路由不存在的 URI 的请求
- colors - 如何使用 R studio 为每个基因设置不同的颜色并在 ChromoMap 中添加图例?
- r - 为 R 中具有某些特征的行设置定义的时间戳