使用 Pillow 在 Python 中进行绿色筛选
Green screening in Python using Pillow
我正在学习绿屏python我已经了解了这个阶段
- 正在导入图像并将其加载到变量中
- 正在加载像素
- 创建新图像
我想更好地理解的部分是用于布尔语句的 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 技术已经实现并且性能更好。
我正在学习绿屏python我已经了解了这个阶段
- 正在导入图像并将其加载到变量中
- 正在加载像素
- 创建新图像
我想更好地理解的部分是用于布尔语句的 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 技术已经实现并且性能更好。