基于Python的铅笔素描图
说到铅笔素描,很多画家用它用得极为精湛。
有的细致到跟照片无法区别,简直是墨笔丹青,如行云流水绕素笺,展瀚海崇山依旧颜,怎一个好字了得;但是有的人画素描怎么花都画不好。
那么同一根铅笔,为啥差距这么大呢?今天笔者给大家介绍一种使用PIL库对原画自动生成素描画。
思考
- 铅笔素描的细节实体如何和Python灰度化、模糊度进行转换?
- 模糊度和参数如何调节?
彩色图像和铅笔素描对比
笔者丑照图
进群:960410445 获取项目源码!
笔者丑照铅笔素描图
山东科技大学校训彩色图
山东科技大学校训铅笔素描图
济南校区一角风景原图
济南校区一角风景铅笔素描图
山科一角美景图
山科一角铅笔素描图
爬虫技术分析
PIL库:
PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是Python官方图像处理库了。其官方主页为:PIL。
PIL历史悠久,原来是只支持Py的版本的,后来出现了移植到Python3的库Pillow,Pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持Python3。
代码解析
导入PIL库
from PIL import Image, ImageFilter, ImageOps加载图片
#先到相应的路径下加载到这张图片 img = Image.open('zandaoguang.jpg') #jpg和png格式均可处理图片并展示图片
def Formula(a, b, alpha): return min(int(a*255/(256-b*alpha)), 255) #通过双层for循环将图片转换 def zandaoguang(img, blur=25, alpha=1.0): img1 = img.convert('L') #图片转换成灰色 img2 = img1.copy() img2 = ImageO(img2) for i in range(blur): #模糊度 img2 = img2.filter) width, height = img1.size for x in range(width): for y in range(height): a = img1.getpixel((x, y)) b = img2.getpixel((x, y)) img1.putpixel((x, y), Formula(a, b, alpha)) img1.show() #展示图片效果 zandaoguang(img)由于篇幅原因,这就只展示部分代码,详情请查看源码请自行去GitHub下载:
后记
毕加索曾经说过:“我在十几岁时画画就像个古代大师,但我花了一辈子学习怎样像孩子那样画画。”
最后笔者想对大家说:画画,我是认真的;搞笑,绝对不是故意的。
如何利用Python打飞机?
学过爬虫的朋友都知道,它是一门“以简制胜”的语言,在笔者两天的努力下,使用200行代码完成了“打飞机”小游戏。
我相信雷霆战机很多人都玩过吧,它是pygame库开发出来的。同时,它还可以开发扫雷、坦克大战等很多有趣的游戏!
游戏界面
游戏说明
- 这是一个简易的Python游戏代码,很多细节都没有去做;
- 大家克隆下来可以直接运行即可;
- ↑↓←→和ASDF控制方向,空格键发射子弹;
- Random函数主要实现敌方飞机产生和子弹的发射频率;
- ()为了让CPU休息;
- 后期我们完善的时候可以加上击中等场景的特效。
部分代码
初始化飞机参数
def __init__(self,screen): #设置飞机默认的xy值 self.imageName='./feiji; self.image=pygame.image.load(self.imageName).convert() [] []显示飞机
def display(self): (self.image,)) for bullet in : bullet.display() bullet.move() for bullet in : if bullet.judgeOut(): (bullet) for bullet in : if bullet in : .remove(bullet)飞机移动
def move(self,opt): if opt=='left': elif opt=='right': elif opt=='up': elif opt=='down':飞机射击
def shoot(self): newBullet=Bulle) newBulletLeft=BulletSmall) newBulletRight=BulletSmall) .append(newBulletLeft) .append(newBulletRight) .append(newBullet)Python版雷霆战机完整代码链接:
之前玩雷霆战机的时候,看起来打飞机游戏蛮复杂,结果经过自己的实现之后,发现仅仅200行就能完成一个打飞机的小项目。
敲黑板,我们在做任何一件事情得时候,一定不要眼高手低,也不要大题小作。
只要是认真做就可以超越昨天的自己。像这款游戏一样,我们的人生只有一关一关的击败敌机(困难),只有在击败了敌机的情况下(完成了艰难任务),我们才能获得新的装备(知识),不断攀升,最终经过不断提升自己,走向成功!下面是啊广总结,与大家共勉!