Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 我是否可以使用Python和枕头将彩色图像转换为灰度,并使用自定义权重而不是内置的luma变换权重?_Image Processing_Python Imaging Library - Fatal编程技术网

Image processing 我是否可以使用Python和枕头将彩色图像转换为灰度,并使用自定义权重而不是内置的luma变换权重?

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的自定义权重。我应该如何处理这个问题 背景:我试图模拟黑白摄影中使用的滤色器,以创造心情和对比度。例如,在拍摄黑白照片时,摄影师可以在镜头前放置红色滤光片或橙色滤光片,从而产生不同外观的照片。所以我的想法是使用与给定过滤器相对应的权重来转换彩色照片。在最简单的情况下,红色过滤器

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
  • 算算
  • 转换回
    uint8
    和PIL图像
下面是一个示例代码:

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经验-可能有较短的解决方案

看看这里。。。