【Educoder作业】※ 数字图像——绿幕抠像

【Educoder作业】※ 数字图像——绿幕抠像

好像顺序不太对?这个应该在问题求解前面?

这次作业比上一篇博客基本得多,大多都是基础函数的运用。

T1 获取图像分辨率

没啥说的,就整个 s i z e size size即可。

########## Begin #########
from PIL import Image
path = 'src/step1/boy.jpg'
img = Image.open(path)
w, h = img.size
print('宽度:%d\n高度:%d' %(w, h))
########## End ##########

T2 获取一个像素

from PIL import Image
x = int(input())  #像素的横坐标
y = int(input())  #像素的纵坐标
########## Begin ##########
img = Image.open('src/step2/boy.jpg')
print(img.getpixel((x, y)))
########## End ##########

T3 图像反色

########## Begin ##########
from PIL import Image
path1 = 'src/step3/source/boy.jpg'
path2 = 'src/step3/student/boy2.jpg'
img = Image.open(path1)
w, h = img.size
for i in range(w) :
    for j in range(h) :
        r, g, b = img.getpixel((i, j))
        r = 255 - r; g = 255 - g; b = 255 - b
        img.putpixel((i, j), (r, g, b))
img.save(path2)
########## End ##########

T4 修改透明度

′ R G B A ′ 'RGBA' RGBA也是一种图像格式

########## Begin ##########
from PIL import Image
path1 = 'src/step4/source/boy.jpg'
path2 = 'src/step4/student/boy2.png'
img = Image.open(path1)
img = img.convert('RGBA')
w, h = img.size
for i in range(w) :
    for j in range(h) :
        r, g, b, a = img.getpixel((i, j))
        img.putpixel((i, j), (r, g, b, 100))
img.save(path2)
########## End ##########

T5 抠图

########## Begin ##########
from PIL import Image
boy = Image.open('src/step5/source/boy.jpg')
boy = boy.convert('RGBA')
w, h = boy.size
for x in range(0, w):
    for y in range(0, h):
        r, g, b, a = boy.getpixel((x, y))
        if ((g + 1) / (r + g + b + 3)) > 0.4 and g > 60:  #如果是偏绿色
            a = 0
            boy.putpixel((x, y), (r, g, b, a))
boy.save('src/step5/student/boy2.png')
########## End ##########

T6 添加场景

这个主要是 p a s t e paste paste函数里面的 m a s k mask mask参量没整明白,转载一篇博客供参考。

猜你喜欢

转载自blog.csdn.net/JZYshuraK/article/details/125288442