【计算机视觉】OpenCV实战项目- 抖音动态小表情

OpenCV实战项目- 抖音动态小表情

替换掉当前机器的文件位置即可运行:

'C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml'

'C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haarcascade_eye.xml'

python 复制代码
import numpy as np
import cv2
import time
import datetime
from PIL import Image

cap = cv2.VideoCapture(0)

''' 人脸识别 '''


def getface(img):
    # 人脸识别数据
    face_cascade = cv2.CascadeClassifier(
        'C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
    # 人眼识别数据
    eye_cascade = cv2.CascadeClassifier(
        'C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haarcascade_eye.xml')
    # 二值化,变为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 获取人脸识别数据
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        # 绘画人脸识别数据
        img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
        # 根据人脸识别数据添加头像
        img = christmas(img, x, y, w, h)
    return img


def christmas(img, x, y, w, h):
    im = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 你的贴纸地址
    mark = Image.open("hat/111.png")
    height = int(w * 987 / 1024)
    mark = mark.resize((w, height))
    layer = Image.new('RGBA', im.size, (0, 0, 0, 0))
    layer.paste(mark, (x, y - height + 100))
    out = Image.composite(layer, im, layer)
    img = cv2.cvtColor(np.asarray(out), cv2.COLOR_RGB2BGR)
    return img


videoWriter = cv2.VideoWriter('testwrite.avi', cv2.VideoWriter_fourcc(*'MJPG'), 15, (1000, 563))

while (cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        # 从新定义图片大小
        img = cv2.resize(frame, (1000, 563))

        # 添加录像时间
        # img = addtime(img)
        # 实时识别
        img = getface(img)
        # 视频显示
        cv2.imshow('frame', img)
        # 保存视频
        videoWriter.write(img)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            print("退出视频")
            break
    else:
        break

cap.release()
videoWriter.release()
cv2.destroyAllWindows()
相关推荐
大金SEO4 分钟前
传统流量正被AI搜索蚕食,GEO如何帮品牌夺回答案席位?
人工智能
moonsims4 分钟前
面向端侧空间安全AI节点AiBrainBox-S应用于电力行业:多模态空间融合、动态风险区、身份-视觉轨迹关联、设备级实时安全推理
人工智能·无人机·量子计算
云飞云共享云桌面8 分钟前
钣金精密机械工厂:多工程师共享图形服务器,SolidWorks/UG 三维设计兼顾成本与数据安全
运维·服务器·人工智能·自动化·制造
救救孩子把11 分钟前
AI面试八股文-07_6-向量数据库索引详解
数据库·人工智能·面试·向量数据库·hnsw
我命由我1234516 分钟前
Function Calling 模型
人工智能·python·学习·ai·学习方法·ai编程·ai写作
别动我齐刘海36 分钟前
实时控制学习2
linux·c++·人工智能·学习·算法
Sayai39 分钟前
ComfyUI+MiniMax H3 文生视频实测:12G 显存跑 21G 模型,5 分钟出片自带音效(附模型与工作流)
人工智能·aigc·音视频·文生视频·comfyui·minimax
生活愉甜40 分钟前
勃肯特2026工博会新品首发——“突破平面,多维精工”
人工智能·平面
博图光电41 分钟前
笔记本键盘漏光缺陷检测
人工智能·数码相机·3d·自动化
wengad42 分钟前
AICoding质量门禁|SonarQube 核心度量项详细释义
人工智能·ai编程·代码质量·质量门禁