【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参量没整明白,转载一篇博客供参考。
更多推荐
所有评论(0)