【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参量没整明白,转载一篇博客供参考。

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值