证件照处理

标注人像轮廓

from PIL import Image
edge=[]
# 请在此处编辑您的代码
#*********** Begin **********#
img = Image.open('./step1/white.jpg')
img = img.convert('RGB')
width,height = img.size
for h in range(0,height):
    s=-1;e=-1
    for w in range(0,width):
        pix = img.getpixel((w,h))
        if sum(pix)<3*240:
            s=w-1
            break
    if w<width-1:
        w1=width-1
        while w1>w:
            pix = img.getpixel((w1,h))
            if sum(pix)<3*240:
                e=w1+1
                break
            w1=w1-1
    edge.append([s,e])
#*********** End **********#
print(edge)

第2关:圈出人像轮廓

from PIL import Image
def circle_out(path):    
    img = Image.open('./step2/white.jpg')
    img = img.convert('RGB')
    edge=[]
    width,height = img.size
    for h in range(0,height):
        s=-1;e=-1
        for w in range(0,width):
            pix = img.getpixel((w,h))
            if sum(pix)<3*240:
                s=w-1
                break
        if w<width-1:
            w1=width-1
            while w1>w:
                pix = img.getpixel((w1,h))
                if sum(pix)<3*240:
                    e=w1+1
                    break
                w1=w1-1
        edge.append([s,e])
    # 请在此处编辑您的代码
    #*********** Begin **********#
    for i in range(len(edge)):
        if (0<=edge[i][0]<width):
            img.putpixel((edge[i][0],i),(0,0,0))
        if (0<=edge[i][1]<width):
            img.putpixel((edge[i][1],i),(0,0,0))
    #*********** End **********#
    img.save('./step2/result/circleout.jpg')

替换背景色

from PIL import Image
def ba_color(path):
    img = Image.open(path)
    img = img.convert('RGB')
    edge=[]
    width,height = img.size
    for h in range(0,height):
        s=-1;e=-1
        for w in range(0,width):
            pix = img.getpixel((w,h))
            if sum(pix)<3*240:
                s=w-1
                break
        if w<width-1:
            w1=width-1
            while w1>w:
                pix = img.getpixel((w1,h))
                if sum(pix)<3*240:
                    e=w1+1
                    break
                w1=w1-1
        edge.append([s,e])
    # 请在此处编辑您的代码
    #*********** Begin **********#
    for i in range(len(edge)):
        if edge[i]==[-1,-1]:
            for k in range(width):
                img.putpixel((k,i),(255,0,0))
        else:
            for k in range(edge[i][0]+1):
                img.putpixel((k,i),(255,0,0))
            for k in range(edge[i][1],width):
                img.putpixel((k,i),(255,0,0))
    #*********** End **********#
    img.save('./step3/结果/red.jpg')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值