用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得到均值。

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

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

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

往期热门系列文章:

Python心得和技巧:

数据分析和爬虫:

更多原创的精彩干货可以去公众号【菜鸟学Python】找我们。目前原创近400个趣味原创案例(Python入门,进阶,经验技巧,爬虫,数据分析,机器学习,面试经验等),欢迎来公众号找我们交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值