# -*- coding: utf8 -*-
import cv2
import random
# opencv 人臉檢測
# 聖誕帽
hats =
for i in
range(4):
% i, -
1))for face in faces:
# 隨機一頂帽子
hat = random.choice(hats)
# 調整帽子尺寸
scale = face[3] / hat.shape[0] *
1.25
hat = cv2.resize(hat, (0, 0), fx
=scale, fy
=scale)
# 根據人臉座標調整帽子位置
x_offset =
int(face[0] + face[2] /
2- hat.shape[1] /
2)y_offset =
int(face[1] - hat.shape[0] /
2)# 計算貼圖位置,注意防止超出邊界的情況
x1, x2 =
max(x_offset, 0), min(x_offset + hat.shape[1], sample_image.shape[1])
y1, y2 =
max(y_offset, 0), min(y_offset + hat.shape[0], sample_image.shape[0])
hat_x1 =
max(0, -x_offset)
hat_x2 = hat_x1 + x2 - x1
hat_y1 =
max(0, -y_offset)
hat_y2 = hat_y1 + y2 - y1
# 透明部分的處理
alpha_h = hat[hat_y1:hat_y2, hat_x1:hat_x2, 3] /
255alpha =
1- alpha_h
# 按3個通道合併
for c in
range(0, 3):
sample_image[y1:y2, x1:x2, c] = (alpha_h * hat[hat_y1:hat_y2, hat_x1:hat_x2, c] + alpha * sample_image[y1:y2, x1:x2, c])
# 儲存最終結果
cv2.imwrite('faces_detect.png'
, sample_image)
微信小程式「聖誕帽」的實現思路詳解
這兩天朋友圈被 聖誕帽 刷屏,這個小程式連微信官方都程式設計客棧出來闢謠了,又乙個現象級的玩意兒。從產品角度而言無疑是非常成功,但從技術角度而言是確實習以為常,創意很重要!簡單說一下思路 獲取頭像,把頭像畫在canvas裡面,接著往canvas裡畫帽子,調整帽子的引數 位置 大小 旋轉 最後儲存為。...
php實現的微信紅包演算法分析(非官方)
最近一直在微信群裡體驗紅包功能,紅包型別有兩種 1.普通紅包 2.拼手氣紅包 普通紅包就不用多解析了,大鍋飯原理,平分。拼手氣紅包講的是手氣 運氣 有人可以搶到很多,有人搶的少得可憐,當然也不是先搶就一定多,說到底了就是隨機。想了想,自己寫寫看,能不能實現類似的功能 不敢說是演算法 bonus to...
微信官方 千萬別信今天的「萬元」紅包
又是一年愚人節,微信官方今天中午放出提醒 請不要相信今天的 萬元 紅包 隨機金額 紅包,因為你最終可能會發現都是表情包的功勞。官方程式設計客棧曬vabfpp圖顯示,華哥發放了乙個 10000 元 紅包,開啟後卻發現只有 1 毛錢。原來,實現所謂 萬元 紅包,只是利用了乙個障眼法,自從微信更新至7.0...