在 python 中有什么方法可以使用颜色曲线来处理图像吗?
Is there any way to manipulate an image using a color curve in python?
我有一系列的 tif 图像,想知道是否有可能在 python 中写一些东西(可能使用 scikit-image 或 OpenCV)来应用颜色曲线。我拥有的数据如下所示,其中我们有一个 x、y、x、y... 数据列表,如下所示:(0, 0, 32, 22, 64, 56, 128, 128, 192, 196, 255、255)。
在评论中,一些人已经给出了如何将颜色LUT应用于图像的答案。但是,当我阅读您的问题时,我的印象是您实际上想要一个 2D 颜色图,其中颜色取决于两个参数。如果是这种情况,我建议访问this post or 。
希望这对您有所帮助!
根据您提供的新信息,我认为以下代码应该可以解决问题。 lut_in
是输入灰度级的向量,lut_out
是所需的输出级。这里它适用于所有 3 个通道(如在 photoshop 中)。您唯一需要的是插值以获得 256 个元素的 LUT(查找 table),它适合输入的 256 个灰度级。您可以对其他颜色分辨率应用相同的方法。
import cv2
import numpy as np
image = cv2.imread('apple.jpg')
lut_in = [0, 127, 255]
lut_out = [0, 80, 255]
lut_8u = np.interp(np.arange(0, 256), lut_in, lut_out).astype(np.uint8)
image_contrasted = cv2.LUT(image, lut_8u)
cv2.imwrite('apple_dark.jpg', image_contrasted)
输入:
输出:
我有一系列的 tif 图像,想知道是否有可能在 python 中写一些东西(可能使用 scikit-image 或 OpenCV)来应用颜色曲线。我拥有的数据如下所示,其中我们有一个 x、y、x、y... 数据列表,如下所示:(0, 0, 32, 22, 64, 56, 128, 128, 192, 196, 255、255)。
在评论中,一些人已经给出了如何将颜色LUT应用于图像的答案。但是,当我阅读您的问题时,我的印象是您实际上想要一个 2D 颜色图,其中颜色取决于两个参数。如果是这种情况,我建议访问this post or
根据您提供的新信息,我认为以下代码应该可以解决问题。 lut_in
是输入灰度级的向量,lut_out
是所需的输出级。这里它适用于所有 3 个通道(如在 photoshop 中)。您唯一需要的是插值以获得 256 个元素的 LUT(查找 table),它适合输入的 256 个灰度级。您可以对其他颜色分辨率应用相同的方法。
import cv2
import numpy as np
image = cv2.imread('apple.jpg')
lut_in = [0, 127, 255]
lut_out = [0, 80, 255]
lut_8u = np.interp(np.arange(0, 256), lut_in, lut_out).astype(np.uint8)
image_contrasted = cv2.LUT(image, lut_8u)
cv2.imwrite('apple_dark.jpg', image_contrasted)
输入:
输出: