gpt4 book ai didi

python - Adobe Photoshop 风格的色调分离和 OpenCV

转载 作者:太空狗 更新时间:2023-10-29 17:14:15 27 4
gpt4 key购买 nike

Adobe Photoshop 似乎通过根据指定的级别数分别量化每个颜色 channel 来进行色调分离。因此,例如,如果您指定 2 个级别,那么它将采用 R 值,如果您的 R 值小于 128,则将其设置为 0;如果您的值 >= 128,则将其设置为 255。它会对 G 和 B 执行相同的操作.

除了遍历每个像素并进行比较并分别设置值之外,是否有一种有效的方法可以在 Python 中使用 OpenCV 执行此操作?由于 OpenCV 2.4 中的图像是 NumPy ndarray,是否有一种有效的方法可以严格地通过 NumPy 进行此计算?

最佳答案

你的问题似乎特别询问了 2 级。但是超过 2 级呢?所以我在下面添加了一个代码,它可以对任何级别的颜色进行分色。

import numpy as np
import cv2

im = cv2.imread('messi5.jpg')

n = 2 # Number of levels of quantization

indices = np.arange(0,256) # List of all colors

divider = np.linspace(0,255,n+1)[1] # we get a divider

quantiz = np.int0(np.linspace(0,255,n)) # we get quantization colors

color_levels = np.clip(np.int0(indices/divider),0,n-1) # color levels 0,1,2..

palette = quantiz[color_levels] # Creating the palette

im2 = palette[im] # Applying palette on image

im2 = cv2.convertScaleAbs(im2) # Converting image back to uint8

cv2.imshow('im2',im2)
cv2.waitKey(0)
cv2.destroyAllWindows()

此代码使用了一种称为 Numpy 中的调色板方法 的方法,它比遍历像素要快得多。您可以在此处找到有关如何使用它来加速代码的更多详细信息:Fast Array Manipulation in Numpy

以下是我针对不同级别获得的结果:

原始图像:

enter image description here

2 级:

enter image description here

4 级:

enter image description here

8 级:

enter image description here

等等……

关于python - Adobe Photoshop 风格的色调分离和 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11064454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com