python小练习(081):让python学画铅笔素描
本帖最后由 jerryxjr1220 于 2017-3-24 08:36 编辑原本想利用tensorflow的神经网络,让计算机学会画铅笔画,后来实际操作下来,其实不用神经网络也是可以实现的,只是效果没有用tensorflow的好。
先看一下几张python画出来的画,一组风景,一组人物
从左到右依次是python不断循环素描的结果。
基本上程序的逻辑就是,先把彩色的图片转换成灰度照片,然后模拟人类作画时,先勾轮廓,再逐步勾画细节的过程。
提几个要点吧,比如勾轮廓,用的方法就是比较像素点左边一小段区域内像素平均值和右边一段的差值,如果差值超过预设范围,则认为该点是轮廓点,左右边的区域大小就决定了画笔的粗细。
另外,我让计算机素描时,不是一次性成像的,而是由淡到深,依次画,这样可以使图画看起来深浅更分明,更有立体感。
下面,还可以改进的是,现在是已像素点为单位进行素描,但是人在实际素描时是做不到以像素点作画的,而往往是以直线为单位,所以下次可以考虑让计算机也用直线作画,然后还可以引入少量随机函数,增加不确定性,这样画出的素描就更接近人类的作品了。
贴一部分代码(仅是其中某一次的素描,仅供参考,具体实现方法其实有很多,大家可以自行尝试。活用python,乐趣无穷!)
**** Hidden Message *****
这个是用线条为单位进行素描的,并且增加了随机函数,使得线条长度不确定,并且增加上下左右、左上、右下、右上、左下8个方位区块的比较,这样创作的素描画看上去更柔和,也更接近真实的人类作画的风格。样图见楼下。
**** Hidden Message ***** 厉害 看啊看 本帖最后由 jerryxjr1220 于 2017-3-24 12:00 编辑
按照之前说的改进思路,追加了用线条作画,并且增加了随机函数,增加扰动性。
对比用像素点画的和用线条画的素描。
是不是感觉用线条画的更接近真实的素描效果呢?{:5_109:}
同样的逻辑还可以用来画彩色铅笔画哦!
原图:
彩色铅笔画:
代码就不贴了,相信你理解黑白的是怎么画的,彩色就不难改了。{:5_97:} 牛!! 收藏 厉害的 大神们学习了 大神,我服! 好厉害 厉害了楼主 展示了python强大的功能。 冬雪雪冬 发表于 2017-3-24 09:47
展示了python强大的功能。
其实python的强大功能往往出乎我们的意料,只要我们脑洞足够大{:5_109:}
让计算机模拟人类的行为,其中最核心的部分是我们要深刻理解人类行为背后的逻辑性,把每个动作都细分再细分,直到每个步骤都有合理的逻辑性可以写出程序。比如,这个素描,就是把素描的动作分解:勾轮廓、画细节,然后勾轮廓再细分,找到根据不同方向上颜色深浅的不同找轮廓线,画笔的粗细,如果没有确定的逻辑性的话,可以考虑增加随机函数来模拟不确定性。
相信只要我们可以理解自己的每个行为,我们就可以创做属于我们自己的模拟机器人。 学习了 !! {:5_91:} 画了张彩色的铅笔画{:5_97:} 见3楼
彩色的处理时间要比黑白的长好多,毕竟有3个通道的数据要处理。
彩色素描的效果还是挺不错的
感觉比原图更有意境 {:9_241:} 这个有点厉害吧 好好学习 厉害了我的哥啊 00