使用 Pillow 在 Python 中进行绿色筛选

Green screening in Python using Pillow

我正在学习绿屏python我已经了解了这个阶段

  1. 正在导入图像并将其加载到变量中
  2. 正在加载像素
  3. 创建新图像

我想更好地理解的部分是用于布尔语句的 RGB 值从何而来。

我在Youtube上看过教程,但是视频没有解释,是跟风视频。我想知道的部分是如何获得 (RGB) 值并确定在执行布尔语句时使用哪些值。 This 是我指的视频。

code screenshot

for x in range (0, width):
    for y in range (0, height):
        (r, g, b) = pixels_harvester[x,y]
        if r <= 150 and g >= 215 and b <= 60:
            pixels_harvester[x,y] = pixels_field[x,y] 
        elif r <= 145 and g >= 210 and b <= 145:
            pixels_harvester[x,y] = pixels_field[x,y]
        elif r <= 155 and g >= 210 and b <= 155:
            pixels_harvester[x,y] = pixels_field[x,y] 
        elif r <= 230 and g >= 254 and b <= 230:
            pixels_harvester[x,y] = pixels_field[x,y]
        elif r <= 164 and g >= 165 and b <= 84:
            pixels_harvester[x,y] = pixels_field[x,y]
        elif r <= 66 and g >= 120 and b <= 45:
            pixels_harvester[x,y] = pixels_field[x,y]  
        elif r <= 130 and g >= 200 and b <= 130:
            pixels_harvester[x,y] = pixels_field[x,y]  
        pixels_combined_image[x,y] = pixels_harvester[x,y]

您可以将图像视为像素矩阵(二维数组或列表列表),我们使用嵌套的 for 循环对其进行迭代。 在彩色图像中,每个像素点有 3 个颜色通道:红色、绿色、蓝色。

pixels_harvester[x,y]

将是一个像素,在 python 中表示为具有要解包的 R、G、B 值的元组。 下面的if-checks判断我们是否检查的是亮绿色像素(可以看到g >= ...),如果是,则将pixel_harvester中的像素替换为[=13]中的像素=],导致“绿屏”效果。

几分钟后视频对此进行了解释,除此之外,还有更多 green-screening 技术已经实现并且性能更好。