一、前言
首先声明,下面的言论纯属胡扯,请不要当真。
在大家的印象当中,程序员是一个高薪职业,经常认为程序员是一个精英群体。现在我就告诉你们,这是真的。也正是因为这样,程序员非常受欢迎,通常一个程序员会有10到11个女生追(此处数字为二进制)。所以大多数程序员都不是单身,这也是程序员非常苦恼的地方。所以很多程序员都想方设法和女朋友分手,看到这篇文章的你幸运了,今天让你学以致用,写个分手小程序,让你享受单身的自由。
二、哈?去旅游?
昨天是5月20号,之所以不在昨天发还是出于对人身安全的考虑。程序员小汪有这么一个苦恼。
他说:“我那个女朋友啊,烦得很,天天粘着我,代码都没时间打了。就昨天,还说要去旅游,她是想peach(屁吃)吧,我那么大个项目(实现登录注册),哪有时间陪她去旅游啊!”。
听到了小汪的抱怨,我思索了一番,问:“你渴望单身吗?”。
小汪回答:“那当然最好了,这样我就能安心写我的项目了”。
于是我就给程序员小汪出了个主意,小汪以下面这个姿态来给我报喜:
在这里插入图片描述
看样子他是成功了。我问小汪:“安排上了?”
小汪略显沮丧:“失败了,不知道哪个流程出了问题”。
我让小汪给我看看我让他做的东西,看完后我摇了摇头:“这个不行,太好看了,再丑点就能成功。”
我让小汪改了改代码,过了一段时间,小汪又换了一副容颜。这次的他容光泛发,从他的表情来看,这回没问题了:
在这里插入图片描述
他脸庞还有些许红润,嘴角带着血丝,但是仍掩盖不了他内心的喜悦。他说:“感谢大哥的教导,已经分了。虽然屏幕被砸了,键盘被崴了,鼠标也没尾巴了,但是都值了。”
三、免责声明
看到这里很多程序员同胞们肯定很好奇,我到底让小汪做了些啥。大家别急,我会告诉大家的。在此之前需要大家阅读以下免责声明:
通过使用内容随之而来的风险与作者无关。访问者可将本文提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
最后有啥问题请不要祖安作者,万分感谢。
四、事情经过
我给小汪的提议是,既然他女朋友想去旅游那你可以展现一下男人的魅力(抠),详细描述你们可以在他们的聊天中得知:
小汪说:“你旅游是去干啥啊?除了吃就是拍照,吃哪都可以吃啊!”
汪妻答曰:“刚恋爱的时候都叫人小甜甜,现在还凶人家。人家就是想要拍照嘛!”
这句话正好就中了小汪下的圈套,小汪讲道:“那好啊,我给你拍总行了吧!”
说完,小汪坐到电脑前。汪妻以为他在订绿皮火车票,内心暗喜。于是在一旁刷起了抖音。万万没想到,小汪却打开了pycharm,一旁刷抖音的汪妻并没有注意到。首先,小汪按win+R
输入了cmd
,然后在命令行输入了下面两段代码:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
小汪默念道:“大哥是说要先安装paddlepaddle和paddlehub,看着是这两句。”小汪思索了一会儿:“抠图要怎么写来着?”他打开浏览器,输入了这个网址:别再自己抠图了,Python用5行代码实现批量抠图。“大哥写的太好了,一下就看懂了”,于是他继续往下写:
from PIL import Image
import paddlehub as hub
# 加载注释
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
# 抠图,执行后会生成一个humanseg_output目录,png图片与原图片同名
results = humanseg.segmentation(data={'image':['master.jpg']})
# 读取png图片
im = Image.open('humanseg_output/master.png')
# 通道分离
r, g, b, a = im.split()
# 读取背景图片
bg = Image.open('bg.jpg')
# 获取粘贴位置
size1 = im.size
size2 = bg.size
im.resize((size2[1], size2[1]))
x = size2[0]-size1[0]
y = size2[1]-size1[1]
# 将png图片粘贴到背景上
bg.paste(im, (x, y), mask=a)
# 保存结果图
bg.save('result.jpg')
小汪运行了程序,发现居然报错了,跑来问我,发现是有模块没安装,他又在cmd
中执行下列代码:
pip install pillow
这下运行没问题了,小汪摸着胡须,挠着头上所剩无几的头发,我估摸着,这一挠又挠死了几个字节的毛囊。他看着下面这几张图片(图中并非小汪女朋友):
出门后的小汪又找到我,我又给小汪出了个主意。小汪回到家,打开浏览器进入OpenCV官网:https://opencv.org/releases/ 。下载了对应版本的软件,然后安装,他在安装目录找到source\data\haarcascades
目录,拿出了haarcascade_frontalface_default.xml
文件,小汪有些迷惑,也没管太多,只是用浏览器打开了这个页面:OpenCv识别小罗伯特唐尼。心想,有啥不会的查一下就好了。小汪心中想着,这下应该没问题了,于是就把实现好的图片给女朋友看。汪妻大怒:“你不想带我去玩你就说啊,还要弄一个程序糊弄我!”,接着扇了小汪一大嘴巴子。小汪暗喜,可是小汪并没能高兴太久。汪妻刷到了这么一条抖音:“有个程序员男朋友是什么体验?巴拉巴拉~”,在看到代码的那一刻,汪妻觉得自己误会小汪了,于是又和小汪和好了,小汪含泪接受了女朋友的道歉。
然后小汪在cmd
执行下面两句代码:
pip install opencv-python
pip install opencv-contrib-python
然后小汪想着我说的话,把女朋友的脸换成一个丑一点的人就好了。又写下了如下代码:
import cv2
def face_detect(im):
"""检测人脸"""
im = cv2.imread(im)
grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_detector.detectMultiScale(grey)
# 返回一张人脸
return faces[0]
写到这里,小汪发现haarcascade_frontalface_default.xml
原来是在这里使用的,于是他把文件复制到项目下来。他心里想到:“这就可以检测人脸了!”。但是还不够,他继续写:
def change_face(im, face_loc, face_im):
x, y, w, h = face_loc
# 读取女朋友图片
im = cv2.imread(im)
# 读取要换的脸
face_im = cv2.imread(face_im)
face_im = cv2.resize(face_im, (w, h))
# 人脸区域切换
im[y:y + h, x:x + w] = face_im
# 保存
cv2.imwrite('result.jpg', im)
小汪又在main
中写到:
if __name__ == '__main__':
face = face_detect('master.jpg')
change_face('master.jpg', face, 'face.jpg')
运行后结果图出来了,小汪点开结果图,大声笑了起来:
汪妻被笑声吸引,看到屏幕上的图片勃然大怒。崴了键盘,砸了屏幕,扯断了鼠标,还把小汪给胖揍了一顿,小汪血流不止,但是还止不住笑声。汪妻果断提出分手。到此事情算是画上了一个完美的句号。
很多人疑惑,小汪为什么要这么做,大家都觉得小汪这样做很激进。但是其实小汪才是最清醒的那个,小汪在日记中写道:“别人笑我太疯癫,我笑他人看不穿”。就在这时,小汪的女朋友回来了:“我刚刚刷到了一个抖音,原来是我不懂程序员的幽默,我错了,你能原谅我吗?”
小汪语重心长的说:“已经晚了”。