【计算机视觉】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()
相关推荐
顾北1229 分钟前
MCP协议实战|Spring AI + 高德地图工具集成教程
人工智能
wfeqhfxz258878233 分钟前
毒蝇伞品种识别与分类_Centernet模型优化实战
人工智能·分类·数据挖掘
中杯可乐多加冰1 小时前
RAG 深度实践系列(七):从“能用”到“好用”——RAG 系统优化与效果评估
人工智能·大模型·llm·大语言模型·rag·检索增强生成
珠海西格电力科技1 小时前
微电网系统架构设计:并网/孤岛双模式运行与控制策略
网络·人工智能·物联网·系统架构·云计算·智慧城市
FreeBuf_1 小时前
AI扩大攻击面,大国博弈引发安全新挑战
人工智能·安全·chatgpt
weisian1512 小时前
进阶篇-8-数学篇-7--特征值与特征向量:AI特征提取的核心逻辑
人工智能·pca·特征值·特征向量·降维
Java程序员 拥抱ai2 小时前
撰写「从0到1构建下一代游戏AI客服」系列技术博客的初衷
人工智能
186******205312 小时前
AI重构项目开发全流程:效率革命与实践指南
人工智能·重构
森之鸟3 小时前
多智能体系统开发入门:用鸿蒙实现设备间的AI协同决策
人工智能·harmonyos·m
铁蛋AI编程实战3 小时前
大模型本地轻量化微调+端侧部署实战(免高端GPU/16G PC可运行)
人工智能·架构·开源