導語
又是一年情人節,各位脫單了嗎?

每年情人節可以說都是品牌們大展身手,情侶們各秀恩愛,單身狗孤苦伶仃的時候(不是)……
而作為程式員and兼職各種文案圈的圈佬,除了被喂一嘴的狗糧,喜歡不僅是敲敲代碼的還有去搜
集一些浪漫動人的文案,除了汲取一些愛情的靈感,
在最適當的時候(比如說今天)分享給大家情人節表白的代碼以及很多很多積攢的文案啦——👇
愛情是,你吃多少苦,我陪你一起吃,(Love…Shares What Life Dishes Out) ——栗子
?
正文
一、木子的文案館?
你想要的都在這里——
1)這一天,讓可愛的撞見可愛的像云撞見云,風撞見風!

2)月亮斬訓湖心,野鶴奔向閑云,我步入你, ——倉央嘉措
答案很長,我準備用一生的時間來回答,你準備要聽了嗎? ——林徽因
我不是在等雨停,我是在等你!
你下午四點鐘來,那么從三點鐘起,我就開始感到幸福, ——《小王子》

二、木子的程式代碼🤭
實作步驟:本文效果就是類似“我的眼里只有你”的效果,使用了Python人臉識別功能這秘密武器
的!dlib庫Python可以直接呼叫dlib庫進行面部模式識別,其中也包含了準度較高的眼部識別,如
下圖:

通過37、38、40、41來確定左眼球位置,43、44、48、47來確定右眼球位置,將女友照片按眼球
區域縮放,利用PIL模塊將圖片貼到背景圖眼球位置上,最終生成目標圖片,
下面來詳細的看下代碼叭
1)環境安裝
本文所用環境:Python3、Pycharm、opencv、numpy、pillow、dlib模塊部分自帶的模塊就不介紹
了,如需安裝環境、解答等見文末找我!第三方模塊安裝:
pip install -i https://pypi.douban.com/simple/ +模塊名
2)代碼展示
import cv2
import numpy as np
from PIL import Image
import os
import dlib
#############改成你的路徑,把照片放到該路徑################
os.chdir(r"C:") #存放照片的檔案目錄,記得路徑用/分隔
#背景圖片
back_graph = 'xiaozhan.jpg' #照片命名最好是英文,否則會報錯
bg_img = cv2.imread(back_graph)
#檢測背景圖片人臉68個點的位置
gray = cv2.cvtColor(bg_img,cv2.COLOR_BGR2GRAY)
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
faces = detector(gray)
from removebg import RemoveBg
from PIL import Image
#把圖片背景設定成眼球的顏色
def Change_img_bg(old_img, bg_color):
rmbg = RemoveBg("UQ7x2hmLXxv8Hs13f1JTL1Q7", "error.log") # 引號內是你獲取的API
rmbg.remove_background_from_img_file(old_img) #圖片地址
old_no_bg = old_img + '_no_bg.png'
im = Image.open(old_no_bg)
x, y = im.size
# 填充背景
p = Image.new('RGBA', im.size, bg_color)
p.paste(im, (0, 0, x, y), im)
# 保存填充后的圖片
p.save("new_black_pg_img.png")
#眼睛內容圖片
src_graph = "yanzi_tiqin3.jpg" #照片命名最好是英文,否則會報錯
#需要改變背景顏色(如不需要請注釋該段代碼)
Change_img_bg(src_graph, 'black') #要跟據眼球的顏色調整#341c02
src_blacke_bg_graph = 'new_black_pg_img.png'
src_img = cv2.imread(src_blacke_bg_graph)
#不需要改變背景顏色
#src_img = cv2.imread(src_graph)
#把圖片裁剪成圓形
def img_deal(ori_img):
img = cv2.imread(ori_img, cv2.IMREAD_UNCHANGED)
h, w, channel = img.shape
img_deal = np.zeros((h, w, 4), np.uint8)
img_deal[:, :, 0:3] = img[:, :, 0:3]
img_circle = np.zeros((h, w, 1), np.uint8)
img_circle[:, :, :] = 0
center = (int(w / 2), int(h / 2))
radius = int(min(h, w) / 2)
img_circle = cv2.circle(img_circle,center ,radius , 255, -1)
img_deal[:, :, 3] = img_circle[:, :, 0]
cv2.imwrite('eye_circle.png', img_deal)
for face in faces:
face_68point = predictor(gray, face)
#獲取左眼球位置資訊
left_eye_x1 = min(face_68point.part(37).x, face_68point.part(41).x)
left_eye_x2 = min(face_68point.part(38).x, face_68point.part(40).x)
left_eye_y1 = min(face_68point.part(37).y, face_68point.part(48).y)
left_eye_y2 = min(face_68point.part(40).y, face_68point.part(41).y)
left_eye_midx = int((left_eye_x1+left_eye_x2)/2)
left_eye_midy = int((left_eye_y1+left_eye_y2)/2)
#獲取右眼球位置資訊
right_eye_x1 = min(face_68point.part(43).x, face_68point.part(47).x)
right_eye_x2 = min(face_68point.part(44).x, face_68point.part(46).x)
right_eye_y1 = min(face_68point.part(43).y, face_68point.part(44).y)
right_eye_y2 = min(face_68point.part(47).y, face_68point.part(46).y)
right_eye_midx = int((right_eye_x1+right_eye_x2)/2)
right_eye_midy = int((right_eye_y1+right_eye_y2)/2)
#左眼球大小
left_eye_r = abs(int(min(left_eye_x1-left_eye_x2,left_eye_y1-left_eye_y2)/2))
left_eye_d = left_eye_r*2
#右眼球大小
right_eye_r = abs(int(min(right_eye_x1-right_eye_x2,right_eye_y1-right_eye_y2)/2))
right_eye_d = right_eye_r*2
#設定眼球中圖片直徑
eye_img_d = min(int(left_eye_d/1.2),int(right_eye_d/1.2))
#把影像貼到左眼
left_ori = cv2.resize(src_img, (eye_img_d, eye_img_d), interpolation=cv2.INTER_AREA)
cv2.imwrite("left_eye.png", left_ori)
img_deal("left_eye.png")
left_eye = Image.open("eye_circle.png")
im = Image.open(back_graph)
im.paste(left_eye,(left_eye_midx-int(eye_img_d/3), left_eye_midy-int(eye_img_d/2)),left_eye)
#把影像貼到右眼
right_ori = cv2.resize(src_img, (eye_img_d, eye_img_d), interpolation=cv2.INTER_AREA)
cv2.imwrite("right_eye.png", right_ori)
img_deal("right_eye.png")
right_eye = Image.open("eye_circle.png")
im.paste(right_eye,(right_eye_midx-int(eye_img_d/3),right_eye_midy-int(eye_img_d/2)),right_eye)
#保存最終圖形
im.save("you_in_my_eye2.png")
3)效果展示
第一組效果👇

?第二組效果👇

?第三組效果👇

?
好啦!這效果是不是特別棒呀~圖片放大就看的清楚啦
總結
“情話都是我抄來的,想說給你聽是真的,”
嘻嘻這是今天最后分享的一句表白文啦,代碼也敲完了,小編繼續區奮斗啦~需要原始碼的👇
完整的素材、安裝環境、原始碼等👀看文末即可啦!
🎉往期文章推薦閱讀——
專案1.0 卡通化頭像
【Opencv實戰】如何快速Get專屬頭像?驚艷—女友要的頭像終于找到了~
專案1.1 動漫化人物
【突破次元壁】誰說二次元離我們遙遠?Python特效火遍全網,關鍵技術原來是它,
專案1.2 摳圖神器
【爆贊】這款Python小程式自動摳圖只需5秒,秒殺PS手動摳圖?
🎄文章匯總——
專案1.0 Python—2021 |已有文章匯總 | 持續更新,直接看這篇就夠了
(更多內容+原始碼都在文章匯總哦!!歡迎閱讀~)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423859.html
標籤:AI
