Python:我的眼里只有你


昨天情人节,写了个表白的小代码,将女友照片进行缩放,自动贴到我照片眼球处,表达“我的眼里只有你”。女友喜欢刘昊然,我这颜值是在不咋地,拿昊然弟弟照片来展示效果:

效果图

昊然眼里只有你
注意看眼睛位置
昊然眼睛

思路

Python可以直接调用dlib库进行人脸识别,其中也包含了准度较高的眼部识别。利用dlib面部识别库定位照片中眼球位置,将女友照片进行相应缩放,最终通过PIL将其贴图到眼球处。

dlib

dlib是一个高质量的机器学习、图像处理、深度学习、人脸识别 C++/Python库。Python中可以直接调用dlib库进行面部识别,其中也包含了准度较高的眼部识别,如下图:

dlib面部识别
通过37、38、40、41来确定左眼球位置,43、44、48、47来确定右眼球位置。获取点在照片中的坐标,计算距离来获取眼球区域信息。

裁剪处理眼球中贴图

因为眼球的形状,贴图最好处理成略小于眼球的圆形图,所以代码中先将女友照片缩小成眼球区域大小的矩形图,再进行边缘透明处理和裁剪生成。

def img_deal(input_img):
    img = cv2.imread(input_img, cv2.IMREAD_UNCHANGED)
    rows, cols, channel = img.shape

    img_new = np.zeros((rows, cols, 4), np.uint8)
    img_new[:, :, 0:3] = img[:, :, 0:3]

    img_circle = np.zeros((rows, cols, 1), np.uint8)
    img_circle[:, :, :] = 0
    img_circle = cv2.circle(img_circle, (int(cols / 2), int(rows / 2)), int(min(rows, cols) / 2), 255, -1)

    img_new[:, :, 3] = img_circle[:, :, 0]
    cv2.imwrite('src_circle.png', img_new)

将女友照片缩放成小于该区域的图片,通过PIL将其贴到眼球位置上。

回顾

你可能会说,这很简单啊,PS一下就搞定,比你这还好看。

是的,有点杀鸡用牛刀的鸡肋感。但代码的好处是,设计好的程序高效地自动执行,我就可以专注于提升操作步骤之外的事情了。对于批量化生成图片也是很方便的。此外,除了图片,还可以通过摄像头在视频中进行操作。

昨天有了“眼中有你”的想法,尝试接触面部识别,效果不错有了些初步收获,后续仍需要更深入地学习和应用,跪求懂行的大佬给予指点、也欢迎感兴趣的朋友一起组团学习哈!

代码下载

网盘下载链接,提取码:os3o

Github链接

最后

新年刚过,充实、惬意。

希望更努力的工作和学习,在新的一年里带给我们更快的成长,加油!

如果觉着还可以,欢迎关注下我学习Python升级的公众号哈~
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值