程序员分手手册,教你如何恢复单身

简介: 程序员分手手册,教你如何恢复单身

一、前言

首先声明,下面的言论纯属胡扯,请不要当真。

在大家的印象当中,程序员是一个高薪职业,经常认为程序员是一个精英群体。现在我就告诉你们,这是真的。也正是因为这样,程序员非常受欢迎,通常一个程序员会有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')

运行后结果图出来了,小汪点开结果图,大声笑了起来:

在这里插入图片描述

汪妻被笑声吸引,看到屏幕上的图片勃然大怒。崴了键盘,砸了屏幕,扯断了鼠标,还把小汪给胖揍了一顿,小汪血流不止,但是还止不住笑声。汪妻果断提出分手。到此事情算是画上了一个完美的句号。

五、事情结束了?

很多人疑惑,小汪为什么要这么做,大家都觉得小汪这样做很激进。但是其实小汪才是最清醒的那个,小汪在日记中写道:“别人笑我太疯癫,我笑他人看不穿”。就在这时,小汪的女朋友回来了:“我刚刚刷到了一个抖音,原来是我不懂程序员的幽默,我错了,你能原谅我吗?”

目录
相关文章
|
11月前
|
移动开发 算法 API
淘宝/天猫:使用物流查询API实时显示包裹位置,减少客服咨询量
电商平台中物流咨询占客服工作40%以上,用户频繁追问包裹位置。本文介绍通过物流查询API实现包裹实时追踪,降低75.6%咨询量,提升用户体验与复购率,助力降本增效。(238字)
W9
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
1812 149
|
JavaScript 前端开发
load、$(document).ready、DOMContentLoaded的区别
load、$(document).ready、DOMContentLoaded的区别
530 3
|
监控 安全 网络协议
端口(Port)
本文介绍了计算机网络中的端口概念,包括定义、作用和分类。端口用于区分不同应用程序,支持多路复用与分解。熟知端口(0-1023)为常见服务预留,注册端口(1024-49151)需注册使用,动态端口(49152-65535)由系统分配。文中还探讨了端口在服务器、客户端和网络设备中的应用,以及端口扫描技术和安全管理措施,如关闭不必要的端口、使用防火墙和端口转发,以保障网络安全。最后总结了端口在高效通信与安全防护中的重要作用。
1859 17
|
监控 大数据 API
可以调度kettle的工具有哪些?都有什么特点?如何选择?
【10月更文挑战第25天】可以调度kettle的工具有哪些?都有什么特点?如何选择?
1410 5
|
缓存 前端开发 JavaScript
React 视频弹幕组件 Video Danmaku
视频弹幕(Danmaku)是在线视频平台中实时显示用户评论的方式,增强互动体验。本文介绍如何在React中实现视频弹幕组件,涵盖基本结构、常见问题及解决方案,如避免弹幕重叠、优化性能、确保同步等,并通过代码示例详细解释。帮助开发者解决样式不一致、输入验证不足和加载延迟等问题,提供实用参考。
817 20
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
874 2
jeecg-boot点击菜单时,在新窗口打开一个新页面
jeecg-boot点击菜单时,在新窗口打开一个新页面
1321 0
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】大语言模型系列-Transformer
Transformer是一种深度学习模型,最初由Vaswani等人在2017年的论文《Attention is All You Need》中提出,它彻底革新了自然语言处理(NLP)领域。在此之前,循环神经网络(RNNs)及其变体,如长短期记忆网络(LSTMs)和门控循环单元(GRUs),是处理序列数据(包括文本)的主流方法。然而,Transformer通过引入自注意力(self-attention)机制,解决了RNNs在处理长序列时存在的梯度消失、计算速度慢等问题,实现了并行化计算,大大提高了训练效率
881 9
|
弹性计算 Kubernetes Cloud Native
全景剖析阿里云容器网络数据链路(一)—— Flannel
本文是[全景剖析容器网络数据链路]第一部分,主要介绍Kubernetes Flannel模式下,数据面链路的转转发链路
1951 8
全景剖析阿里云容器网络数据链路(一)—— Flannel