【Opencv实战】如何快速Get专属头像?惊艳!女友要的头像终于找到了!

285 阅读3分钟

导语

Ps 小故事

哦?今天又到了三天换一次头像的时间了~

你是不是在辛苦的在各大头像网站翻来覆去!这不.....女朋友又开始催了:

其实心里的内心活动是这样子的——多找找?总能找到她喜欢的吧!!!不想找,头疼,找那完意儿还不如把时间留下

来打几把英雄联盟!!

/ Python不仅好用,而且好玩。/今天小编给大家带来一个好玩的库——opencv-python

继动漫化头像——素描图像——今天借助它可以制作卡通化图像哦!

三大神器集合:再也不用担心女友换头像啦~

正文

1)环境搭建:

import cv2
from PIL import Image, ImageOps, ImageFilter

1.1 模块安装语句如下:

pip install -i https://pypi.douban.com/simple/ +模块名

1.2 安装成功如下图:​(之前安装过)

安装成功后咱们就开始吧。go go go!

2)素材准备(展示部分可自选)

3)专属卡通化制作

2.1 功能使用:

OpenCV的cvtColor()功能:将图像从彩色通道转换为灰度通道。

OpenCV中的medianBlur() 函数:应用中值模糊。

OpenCV中的adaptiveThreshold() 函数:用于二值化处理图像,对于对比大的图像有较好效果。

2.2 详细代码如下

imgInput = input('请输入需要转换的图片文件路径:')
a = input('请输入图片的模糊参数值(奇数,数值越大越模糊,风景类推荐值29,肖像类推荐值7):')
b = input('请输入图片的线条参数值(大于零时数值越小线条越明显,小于零时图片为暗色,风景类推荐值5,肖像类推荐值4):')
imgPath = imgInput.split(".")[0] + '_cartoon.' + imgInput.split(".")[1]
img_initial = cv2.imread(imgInput)
img_vague = cv2.medianBlur(img_initial, int(a))
img_gray = cv2.cvtColor(img_vague, cv2.COLOR_RGB2GRAY)
img_line = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize=int(a), C=int(b))
img_line = cv2.cvtColor(img_line, cv2.COLOR_GRAY2RGB)
imgOutput = cv2.bitwise_and(img_vague,img_line)
cv2.imwrite(imgPath,imgOutput);
print('文件保存在' + imgPath)
print('\n更改参数以获得最佳效果\n')

4)效果展示

4.1 输入的图片各种参数如下:

效果 Part 1

​原图——

卡通化之后——

4.2 输入的图片各种参数如下:

效果 Part 2

​原图——

卡通化之后——​

​4.3 输入的图片各种参数如下:

效果 Part 3

总结

好啦!卡通化程序可以自己随意设置数值的哈~想要什么样子都可以,任何图像都可以的啦!

赶紧自己行动起来试试吧~😊

完整的免费源码领取处:

如需完整的项目源码+素材源码基地见:#私信小编06#或者点击蓝色文字添加即可获取免费的福利!

你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~