QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

实习版主

Rank: 10Rank: 10

技术值
查看: 4519|回复: 163

[技术交流] python小练习(081):让python学画铅笔素描

  [复制链接]
最佳答案
56 
累计签到:356 天
连续签到:1 天
jerryxjr1220 发表于 2017-3-23 20:12:36 4519163 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jerryxjr1220 于 2017-3-24 08:36 编辑

原本想利用tensorflow的神经网络,让计算机学会画铅笔画,后来实际操作下来,其实不用神经网络也是可以实现的,只是效果没有用tensorflow的好。

先看一下几张python画出来的画,一组风景,一组人物
无标题.png

从左到右依次是python不断循环素描的结果。

基本上程序的逻辑就是,先把彩色的图片转换成灰度照片,然后模拟人类作画时,先勾轮廓,再逐步勾画细节的过程。

提几个要点吧,比如勾轮廓,用的方法就是比较像素点左边一小段区域内像素平均值和右边一段的差值,如果差值超过预设范围,则认为该点是轮廓点,左右边的区域大小就决定了画笔的粗细。

另外,我让计算机素描时,不是一次性成像的,而是由淡到深,依次画,这样可以使图画看起来深浅更分明,更有立体感。

下面,还可以改进的是,现在是已像素点为单位进行素描,但是人在实际素描时是做不到以像素点作画的,而往往是以直线为单位,所以下次可以考虑让计算机也用直线作画,然后还可以引入少量随机函数,增加不确定性,这样画出的素描就更接近人类的作品了。

贴一部分代码(仅是其中某一次的素描,仅供参考,具体实现方法其实有很多,大家可以自行尝试。活用python,乐趣无穷!)

游客,如果您要查看本帖隐藏内容请回复


这个是用线条为单位进行素描的,并且增加了随机函数,使得线条长度不确定,并且增加上下左右、左上、右下、右上、左下8个方位区块的比较,这样创作的素描画看上去更柔和,也更接近真实的人类作画的风格。样图见楼下。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3荣誉 +15 鱼币 +15 贡献 +13 收起 理由
鬼人 + 5 + 5 + 3 很有趣。
冬雪雪冬 + 5 + 5 + 5
~风介~ + 5 + 5 + 5 有意思!

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
278 
累计签到:277 天
连续签到:2 天
新手·ing 发表于 2017-3-23 21:21:17 | 显示全部楼层
厉害
最佳答案
0 
累计签到:4 天
连续签到:1 天
949898050 发表于 2017-3-23 23:53:15 | 显示全部楼层
看啊看
最佳答案
56 
累计签到:356 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-3-24 02:10:24 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-3-24 12:00 编辑

按照之前说的改进思路,追加了用线条作画,并且增加了随机函数,增加扰动性。
对比用像素点画的和用线条画的素描。
pencil_drawing2.jpg

pencil_drawing13.jpg

是不是感觉用线条画的更接近真实的素描效果呢?

同样的逻辑还可以用来画彩色铅笔画哦!
原图:
6--32.jpg

彩色铅笔画:
color_pencil_drawing.jpg

代码就不贴了,相信你理解黑白的是怎么画的,彩色就不难改了。
最佳答案
3 
累计签到:13 天
连续签到:1 天
Py_thon 发表于 2017-3-24 06:58:44 | 显示全部楼层
牛!!
最佳答案
7 
累计签到:147 天
连续签到:1 天
清风揽月shine 发表于 2017-3-24 08:41:32 | 显示全部楼层
收藏 厉害的 大神们  学习了
最佳答案
141 
累计签到:285 天
连续签到:43 天
ooxx7788 发表于 2017-3-24 08:47:23 | 显示全部楼层
大神,我服!
最佳答案
0 
累计签到:30 天
连续签到:3 天
chip 发表于 2017-3-24 09:10:31 | 显示全部楼层
好厉害
最佳答案
15 
累计签到:225 天
连续签到:4 天
sunnychou 发表于 2017-3-24 09:30:55 | 显示全部楼层
厉害了楼主
最佳答案
503 
累计签到:731 天
连续签到:6 天
冬雪雪冬 发表于 2017-3-24 09:47:55 | 显示全部楼层
展示了python强大的功能。
最佳答案
56 
累计签到:356 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-3-24 10:06:01 | 显示全部楼层
冬雪雪冬 发表于 2017-3-24 09:47
展示了python强大的功能。

其实python的强大功能往往出乎我们的意料,只要我们脑洞足够大

让计算机模拟人类的行为,其中最核心的部分是我们要深刻理解人类行为背后的逻辑性,把每个动作都细分再细分,直到每个步骤都有合理的逻辑性可以写出程序。比如,这个素描,就是把素描的动作分解:勾轮廓、画细节,然后勾轮廓再细分,找到根据不同方向上颜色深浅的不同找轮廓线,画笔的粗细,如果没有确定的逻辑性的话,可以考虑增加随机函数来模拟不确定性。

相信只要我们可以理解自己的每个行为,我们就可以创做属于我们自己的模拟机器人。
最佳答案
1 
累计签到:46 天
连续签到:1 天
wp_wyx 发表于 2017-3-24 11:33:07 | 显示全部楼层
学习了 !!
最佳答案
0 
累计签到:289 天
连续签到:1 天
fred_tan 发表于 2017-3-24 11:59:14 | 显示全部楼层
最佳答案
56 
累计签到:356 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-3-24 12:05:26 | 显示全部楼层
画了张彩色的铅笔画 见3楼
彩色的处理时间要比黑白的长好多,毕竟有3个通道的数据要处理。
最佳答案
56 
累计签到:356 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-3-24 16:21:12 | 显示全部楼层
color_pencil_drawing22.jpg
彩色素描的效果还是挺不错的

22.jpg
感觉比原图更有意境
最佳答案
0 
累计签到:81 天
连续签到:1 天
ivwdcwso 发表于 2017-3-25 09:33:58 | 显示全部楼层
最佳答案
0 
累计签到:3 天
连续签到:1 天
不再亦 发表于 2017-3-25 10:33:43 | 显示全部楼层
这个有点厉害吧
最佳答案
0 
累计签到:2 天
连续签到:2 天
jerry_2007 发表于 2017-3-25 13:57:30 | 显示全部楼层
好好学习
最佳答案
0 
累计签到:1 天
连续签到:1 天
xiang136 发表于 2017-3-26 09:02:12 From FishC Mobile | 显示全部楼层
厉害了我的哥啊
最佳答案
0 
累计签到:172 天
连续签到:1 天
于木 发表于 2017-3-26 09:07:42 | 显示全部楼层
00

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-12-18 22:43

快速回复 返回顶部 返回列表