用python将图片变为油画_Python也能成为毕加索?我用Python给小姐姐画了幅油画

原标题:Python也能成为毕加索?我用Python给小姐姐画了幅油画

小编的舍友最近交了一个女朋友,是念艺术系的,擅长画画!长的好看又漂亮,舍友经常在我耳边吹嘘,女朋友画的油画多么漂亮。

哎。。。经常在我面前撒狗粮,真的是羡慕嫉妒恨呀。所以,小编今天也来画画,都说Python无所不能,今天就来秀一下如何把图片转化为油画效果。小编不仅给大家展示结果,还要用白话给大家解释背后的原理,嘿嘿!一起来看看吧!

01.程序原理

下图展示的是图片转为油画的原理。

02.具体怎么玩

首先,我们将整幅图进行灰度化,然后归一化到[0,buctsize]的范围内,bucksize的默认值是8;

然后, 我们有一个模板,设置其大小为4,该模板就在原图上进行滑动,滑动的步长设置为step,默认为2;

接着,对于每一个模板,统计归一化后哪个像素值出现的次数最多,然后我们统计它出现的次数和它的像素值数值,上图中可以看到,出现最多的像素值是2,而它出现的次数是6。 得到数值2和它出现的次数6之后,就将模板对应到原图中去;

最后, 统计对应位置的原图像素值,并将其求均值,而均值作为像素值被填充到 油画图当中;

经常上面几步,就实现了图片转油画图的算法

03.程序实现

那我们接下来看一下程序是如何实现的吧

首先,程序将图像转化为灰度图后又归一化到[0,bucksize]。然后就开始以step为步长,遍历整幅原图。

对于每一个模板,首先统计模板中像素值出现次数最多的那个像素值pix,和它出现的次数times,然后针对模板对应位置的原图,统计它的像素数值。

也就是说如果在模板中对应的像素值是pix的话,那么程序中bucketMean就加上对应的数值。最后将bucketMean除以times得到均值。

将均值写入到对应的油画位置。当整幅图遍历完成后,油画也便制作完毕了。

04.用flask进行网站展示

在进行完程序的讲解后,接下来小编就带领大家利用flask框架进行一个结果的展示。如下所示:

需要注意的是,由于程序需要对整幅图像进行遍历,所以在处理的时间上会比较缓慢,需要大家耐心的等待。大家也可以安装opencv-contrib-python,直接调用cv2.xphoto.oilPainting函数也可以实现图片转油画的效果。

需要源码的同学不要着急,如果上面的文章看的不过瘾,我们会在B站录制详细的视频给大家一行一行讲解原理。到时源码视频一起奉上!

由 菜鸟学Python原班人马打造的公众号: 程序员GitHub,现已正式上线!

接下来我们将会在该公众号上,为大家分享 GitHub 上优质的开源神器,程序员圈的趣事,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

我们在B站上录制了大量的视频,欢迎大家交流学习

1). 花木兰到底好看不,我用Python爬取上万条评论

2). 80行Python代码一键轻松把Pdf转word

3). 用Python一键把图片转漫画

4). 再见付费软件,我用70行Python搞定

5). 用Python分析“青春有你2”

6). 用Python三步制作短视频

7). 用Python实现一个弹球游戏

8). 10行代码实现美图秀秀

9). 50行代码用Python批量做海量小姐姐素描图

10).用Python做一个动态语言排行榜

11).我用Python集齐五福

点这里,直达我们的B站大本营返回搜狐,查看更多

责任编辑:

你可能感兴趣的:(用python将图片变为油画)