python挑战之level 16

本文介绍了解决一幅错位图像的方法,通过使用Python的PIL库,提供了两种不同的图像处理技术来重新排列图像中的元素,使其恢复正常。第一种方法是通过检测特定颜色的像素并进行平移操作;第二种方法则是寻找每行的红色条纹并以此为基准进行图像调整。

连接为:http://www.pythonchallenge.com/pc/return/mozart.html

登陆账号密码:(huge,file)

——————————————————————————————————————————

一副混乱的图片,

标题:

<title>let me get this straight</title>
这是让我们把图片整理对齐
那么如何整理,不知道。百度一下

————————————————————————————————————————————

第一种方法:

from PIL import Image,ImageDraw
#获取原图像新建大小相同的图片
im = Image.open('mozart.gif')
w,h = im.size
nim = Image.new('RGB',im.size,0)
#图中红点的颜色值
magenta = 195
#从每行的遇到的第一个红条开始平移
for i in range(h):
    for j in range(w):
        if im.getpixel((j,i))==magenta:
            #把第一个红条右边的所有像素左移
            [nim.putpixel((k,i),im.getpixel(((k+j)%w,i))) for k in range(w)]
            break
nim.save('out16.gif')
——————————————————————————————————————————————————————————

这个方法我完全是参考一个哥们。的开始没明白什么意思,不会做

————————————————————————————————————————————————————
第二种方法:

from PIL import Image,ImageDraw
#获取原图像新建大小相同的图片
im = Image.open('mozart.gif')
w,h = im.size

#图中红点的颜色值
magenta = 195

#获取每一行第一个红条并保存在列表之中
bars=[]
for j in range(h):
    for i in range(w - 5):
        #红条长度大概在五个像素
        if im.getpixel((i,j)) == magenta and im.getpixel((i+4,j)) == magenta:
            bars.append((i,j))
print(bars[:10])


#从每行的遇到的第一个红条开始平移
shift = Image.new(im.mode, (w * 2, h), 0)
shift.palette = im.palette  # share colour table,分享颜色板
for j in range(h):
    for i in range(w):
        shift.putpixel((i + w - bars[j][0], j), im.getpixel((i,j)))

shift.save('shift.png')
——————————————————————————————————————————————————————————————————————————

在看完这两种方法后,我才发现,原来每行就一个红条,

所以结果就是:romance

下一关为:http://www.pythonchallenge.com/pc/return/romance.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值