作者 | 阿广

责编 | 胡巍巍

基于Python的铅笔素描图

说到铅笔素描,很多画家用它用得极为精湛。

有的细致到跟照片无法区别,简直是墨笔丹青,如行云流水绕素笺,展瀚海崇山依旧颜,怎一个好字了得;但是有的人画素描怎么花都画不好。

那么同一根铅笔,为啥差距这么大呢?今天笔者给大家介绍一种使用PIL库对原画自动生成素描画。

思考

铅笔素描的细节实体如何和Python灰度化、模糊度进行转换?模糊度和参数如何调节?彩色图像和铅笔素描对比

笔者丑照图

笔者丑照铅笔素描图

山东科技大学校训彩色图

山东科技大学校训铅笔素描图

济南校区一角风景原图

济南校区一角风景铅笔素描图

山科一角美景图

山科一角铅笔素描图

爬虫技术分析

PIL库:

PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是Python官方图像处理库了。其官方主页为:PIL。

PIL历史悠久,原来是只支持Python2.x的版本的,后来出现了移植到Python3的库Pillow,Pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持Python3。

代码解析

导入PIL库

from PIL import Image, ImageFilter, ImageOps

加载图片

#先到相应的路径下加载到这张图片img = Image.open('zandaoguang.jpg') #jpg和png格式均可

处理图片并展示图片

defFormula(a, b, alpha):return min(int(a*255/(256-b*alpha)), 255)#通过双层for循环将图片转换defzandaoguang(img, blur=25, alpha=1.0):img1 = img.convert('L') #图片转换成灰色 img2 = img1.copy() img2 = ImageOps.invert(img2)for i in range(blur): #模糊度 img2 = img2.filter(ImageFilter.BLUR) width, height = img1.sizefor 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下载:

https://github.com/zandaoguang/pic_proc后记

毕加索曾经说过:“我在十几岁时画画就像个古代大师,但我花了一辈子学习怎样像孩子那样画画。”

最后笔者想对大家说:画画,我是认真的;搞笑,绝对不是故意的。

如何利用Python打飞机?

学过爬虫的朋友都知道,它是一门“以简制胜”的语言,在笔者两天的努力下,使用200行代码完成了“打飞机”小游戏。

我相信雷霆战机很多人都玩过吧,它是Pygame库开发出来的。同时,它还可以开发扫雷、坦克大战等很多有趣的游戏!

游戏界面

游戏说明

这是一个简易的Python游戏代码,很多细节都没有去做;大家克隆下来可以直接运行showEnemy.py即可;↑↓←→和ASDF控制方向,空格键发射子弹;Random函数主要实现敌方飞机产生和子弹的发射频率;time.sleep()为了让CPU休息;后期我们完善的时候可以加上击中等场景的特效。部分代码

初始化飞机参数

def__init__(self,screen):#设置飞机默认的xy值self.x=180self.y=600self.screen=screenself.imageName='./feiji/hero.gif'self.image=pygame.image.load(self.imageName).convert()self.bulletList=[]self.needRemoveList=[]

显示飞机

defdisplay(self):self.screen.blit(self.image,(self.x,self.y))for bullet inself.bulletList:bullet.display() bullet.move()for bullet inself.bulletList:if bullet.judgeOut():self.needRemoveList.append(bullet)for bullet inself.bulletList:if bullet inself.needRemoveList:self.bulletList.remove(bullet)

飞机移动

defmove(self,opt):if opt=='left':self.x-=15elif opt=='right':self.x+=15 elif opt=='up':self.y-=15 elif opt=='down':self.y+=15

飞机射击

defshoot(self):newBullet=Bullet(self.screen,self.x,self.y) newBulletLeft=BulletSmall(self.screen,self.x,self.y) newBulletRight=BulletSmall(self.screen,self.x+64,self.y+20)self.bulletList.append(newBulletLeft)self.bulletList.append(newBulletRight)self.bulletList.append(newBullet)

Python版雷霆战机完整代码链接:

https://github.com/zandaoguang/play-plane之前玩雷霆战机的时候,看起来打飞机游戏蛮复杂,结果经过自己的实现之后,发现仅仅200行就能完成一个打飞机的小项目。

敲黑板,我们在做任何一件事情得时候,一定不要眼高手低,也不要大题小作。

只要是认真做就可以超越昨天的自己。像这款游戏一样,我们的人生只有一关一关的击败敌机(困难),只有在击败了敌机的情况下(完成了艰难任务),我们才能获得新的装备(知识),不断攀升,最终经过不断提升自己,走向成功!下面是啊广总结,与大家共勉!

眼高手低志不广,

欺软怕硬人嚣张;

欲上天宫揽明月,

以为自己会飞翔!

作者简介:阿广。本文首发个人公众号视学算法,专注于大数据、人工智能和算法的学习平台,也是一名保送中科院软件研究所直博的技术提升之路。人生苦短,我愿做您最忠实的技术支持伙伴!一起用代码改变世界!声明:本文为作者投稿,版权归其个人所有。

怎么安装python3.72_这才是 Python 的 “72 变”玩法!相关推荐

  1. 这才是 Python 的 “72 变”玩法!

    作者 | 阿广 责编 | 胡巍巍 基于Python的铅笔素描图 说到铅笔素描,很多画家用它用得极为精湛. 有的细致到跟照片无法区别,简直是墨笔丹青,如行云流水绕素笺,展瀚海崇山依旧颜,怎一个好字了得: ...

  2. Ubuntu安装python3.7,并将python链接指向python3.7

    1.安装python3.7 sudo apt-get install python3.7 2.查看python目前的指向 ls -l /usr/bin | grep python 3.删除原有的pyt ...

  3. ubuntu安装python3.6_Ubuntu上安装python3.6以及多版本python管理 | SQN

    这篇文章记录了如何在Ubuntu上安装python3.6以及将其设置为系统默认. 查看Ubuntu版本 由于python3.6在不同的Ubuntu版本中的安装是不一样的,这里我们先来看一下的Ubunt ...

  4. Ubuntu安装python3.7.5(附加更新python默认指向为python3.7)

    我的环境:Ubuntu16.04 + Ptyhon3.7.5 之前写过CentOS系统安装Python,本以为Ubuntu下和CentOS下安装步骤差不多,没想到不太一样,所以更新一篇Ubuntu下安 ...

  5. macos 安装python3.8 版本_用python安装cutadapt程序

    昨天用ubuntu安装了cutadapt,但是在之后的程序运行中,还是行不通.因此,今天还是在win10下用python来进行安装. --------------------------------- ...

  6. ubuntu18安装python3.6.8_ubuntu 18.04 + Python 3.6.8 更换软件安装源

    国外的开源项目开展的是如火如荼,我们国内的当然也不甘落后.为了更好的玩转 Python,我使用了 ubuntu Linux 来作为开发环境.但是由于国内网络的限制,访问国外的一些软件源的时候,速度比较 ...

  7. ubuntu指向python3_ubuntu安装python3.7,并更新python默认指向为python3.7

    https://www.geek-share.com/detail/2756645464.html 步骤5:./configure(也可以./configure --prefix=/usr/local ...

  8. python的函数式编程玩法+年末小感

    从小老师教编程语言就告诉分两种:面向过程和面向对象,正如同小学电脑课面对的是win95,仿佛世界上windows就是操作系统的别名,如今还是这样,高校的计算机中心都是windows,所以linux是要 ...

  9. Python中selenium的玩法,小朋友看了都说学会了

    大家好,我是辣条. 目录 selenium的介绍 1. selenium运行效果展示 2. selenium的作用和工作原理 3. selenium的安装以及简单使用 4. selenium的简单使用 ...

最新文章

  1. SQL Server调优系列进阶篇(如何维护数据库索引)
  2. 动画 java_Java动画程序介绍
  3. Mybatis SQL拦截器实现
  4. 数据结构与算法之花费铜板最小和利润最大题目
  5. iphone数据迁移到新iphone_Mac专业iPhone数据恢复软件----Omni Recover
  6. HTTPS请求实现框架
  7. 逻辑代数01律的理解_零基础学习计算机原理:布尔逻辑和逻辑门
  8. php定义object数据类型,PHP数据类型(4):对象object
  9. yii2怎样写规则可以隐藏url地址里的控制器名字
  10. MySQL主从数据同步延时分析
  11. 最全面的PLC学习网站
  12. Win7 无法安装 VMware Tools
  13. excel合并工作簿怎么做?
  14. 程炳皓:我不恨陈一舟 开心网做不好是我自己的问题
  15. Vue之v-on之修饰符prevent(007)
  16. mvn命令运行springboot程序报错No compiler is provided in this environment. Perhaps you are runningon a JRE
  17. 破解版百度云【亲测好用】完美解决限速
  18. 基于Python的人脸识别(68个识别点)和焦点人物检测
  19. 【JZOJ6124】有限空间跳跃理论
  20. 保研夏令营数学复习(高数 概率 线代)

热门文章

  1. 关于IBM Cognos认证
  2. vue中导入excel文件
  3. 企业级个人免签虚拟商品卡密点卡自动发卡网平台自适应源码支持易支付分销
  4. Revit创建装饰纹路柱及CAD生成柱
  5. 51单片机的应用——正脉冲宽度的的测量
  6. RT-PCR、QPCR、Real-time PCR、Real-time RT-PCR区别(自用)
  7. 风机负载下无刷直流电机数学建模及闭环速度控制simulink仿真
  8. PAT乙级095 解码PAT准考证
  9. 手头攒下10万闲钱投资什么比较好
  10. 苹果手机和android的对比度,扫盲:安卓手机2000万像素为啥不如苹果手机800万像素?...