Image processing 我是否可以使用Python和枕头将彩色图像转换为灰度,并使用自定义权重而不是内置的luma变换权重?
PIL convert函数的文档说明: 将彩色图像转换为灰度(模式“L”)时,库 使用ITU-R 601-2 luma变换:L=R*299/1000+G*587/1000+ B*114/1000 我想在计算中传递R、G和B的自定义权重。我应该如何处理这个问题Image processing 我是否可以使用Python和枕头将彩色图像转换为灰度,并使用自定义权重而不是内置的luma变换权重?,image-processing,python-imaging-library,Image Processing,Python Imaging Library,PIL convert函数的文档说明: 将彩色图像转换为灰度(模式“L”)时,库 使用ITU-R 601-2 luma变换:L=R*299/1000+G*587/1000+ B*114/1000 我想在计算中传递R、G和B的自定义权重。我应该如何处理这个问题 背景:我试图模拟黑白摄影中使用的滤色器,以创造心情和对比度。例如,在拍摄黑白照片时,摄影师可以在镜头前放置红色滤光片或橙色滤光片,从而产生不同外观的照片。所以我的想法是使用与给定过滤器相对应的权重来转换彩色照片。在最简单的情况下,红色过滤器
背景:我试图模拟黑白摄影中使用的滤色器,以创造心情和对比度。例如,在拍摄黑白照片时,摄影师可以在镜头前放置红色滤光片或橙色滤光片,从而产生不同外观的照片。所以我的想法是使用与给定过滤器相对应的权重来转换彩色照片。在最简单的情况下,红色过滤器将是L=R*1+G*0+B*0,橙色过滤器将是L=R*0.5+G*0.5+B*0。您可以使用语法
L=R*0.5+G*0.5+B*0
R
、G
和B
应该是float
类型的二维数组
- 由于您使用PIL读取图像,因此需要将图像转换为3D RGB阵列(其他软件包将图像读取为3D阵列)李>
- 将RGB元素从类型
转换为类型uint8
李>float
- 算算李>
- 转换回
和PIL图像李>uint8
import numpy as np
from PIL import Image
RGB = np.asarray(Image.open("rgb_input.png")) # Read RGB input image and convert to RGB array
RGB = RGB.astype('float') # Convert elements from uint8 to float
R, G, B = RGB[:, :, 0], RGB[:, :, 1], RGB[:, :, 2] # Split RGB to R, G and B numpy arrays.
L = R * 299/1000 + G * 587/1000 + B * 114/1000 # Convert to L (select your desired coefficients).
L = Image.fromarray(np.uint8(L)) #Format back to PIL image
L.show()
备注:我没有太多Python经验-可能有较短的解决方案 看看这里。。。