如何将对象(打印图像CMYK)图片转换为真实的RGB值?

时间:2019-07-05 09:00:48

标签: java python opencv opencv4android

说明

CMYK(RGB格式)我不知道这种情况的真实含义

如果在一张纸上打印出RGB,由于它采用CMYK格式,因此看上去将与计算机显示的内容有所不同。

然后为这张纸拍照,它以RGB格式存储,但是所有颜色仍然与计算机屏幕不同。

因此,它保留了打印机(CMYK)的颜色,但以RGB格式显示为手机中的图片。

问题

不用担心外部因素……假设我们处于理想的控制环境中。

那么我该如何将那张纸颜色的电话图片尽可能地转换成我的计算机所显示的呢?

下面有人可以给我分享一些理论或示例代码吗?

示例

用手机相机拍摄的彩色打印纸图片

enter image description here

计算机中显示什么

enter image description here

2 个答案:

答案 0 :(得分:0)

不能。可以精确表示的颜色集“色域”在RGB和CMYK之间有所不同。即使使用世界上最好的(四色处理)打印机,您也将无法像在显示器上那样呈现出明亮的绿色。

答案 1 :(得分:0)

您在示例中使用的颜色是“完全饱和”的颜色,因此无法在其他空间中表示,如果您选择的饱和色较少,那么您应该有更多的运气

如@Sneftel所说,它们具有不同的色域,因此您无法在任一空间的每种颜色之间进行转换

也就是说,您可以查看类似colormath的库,这些库可以让您执行以下简单操作:

from colormath.color_objects import sRGBColor, CMYKColor
from colormath.color_conversions import convert_color

convert_color(sRGBColor(1, 1, 0), CMYKColor)

但是要在真实图像和这些图像的照片之间进行实际转换,您需要一个非常受控的环境。上面的代码具有非物理的假设,但是我认为您应该可以使用其他中间色空间以及CIECAM02模型到达那里