opencv 动漫头像截取

这篇博客介绍了如何利用Python和OpenCV进行动漫头像的截取。通过调用预训练的人脸检测XML模型,代码可以识别并保存动漫人物的头像。尽管存在一些图片读取问题,但通过异常处理确保了程序的稳定运行,最终获取了大量人脸数据。
摘要由CSDN通过智能技术生成

原文链接: opencv 动漫头像截取

上一篇: TensorFlow 条件变分自编码(CVAE)

下一篇: jetbrains 学生版申请

git

https://github.com/nagadomi/lbpcascade_animeface

使用opencv截取动漫头像,并保存

op画风。。。。。。

ee39257c1186efc425415d34ec1b4591554.jpg

炮姐就好很多了

5e32d005bb241409e855cac1a0e9a694de9.jpg

cb2849e88abcb3d0198858d971d5e7c2d77.jpg

d58cf629e60889afa0ca1fa90b6ea2b5e8a.jpg

保存文件名简单使用自增数字

代码中使用np读取中文字符路径,由于有的图片损坏无法读取,也加了异常捕获,防止代码运行中退出,最后保存到指定目录中

    img = cv.imdecode(np.fromfile(path, dtype=np.uint8), -1)

效果还行。。。。。。。500多张图片提取了近1000张人脸数据

825032f624f44867befeee2f3c97bb0fea4.jpg

import cv2 as cv
import numpy as np
import os

face_cnt = 0


def detect(path, out_dir, face_size=128):
    global face_cnt
    # 解决opencv 读取中文路径时出错
    img = cv.imdecode(np.fromfile(path, dtype=np.uint8), -1)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    face_detector = cv.CascadeClassifier("lbpcascade_animeface.xml")
    faces = face_detector.detectMultiScale(gray, 1.05, 5)
    print(path, len(faces))
    for i, rect in enumerate(faces):
        x, y, w, h = rect
        face = img[y:y + h, x:x + w]
        face = cv.resize(face, (face_size, face_size))
        out_path = f"{out_dir}/{face_cnt}.jpg"
        face_cnt += 1
        print(out_path)
        cv.imwrite(out_path, face)


def save_all():
    img_dir = 'C:/Users/Ace/Pictures/炮姐'
    out_dir = 'd:/data/faces'

    img_paths = []
    for src_name, dir_names, file_names in os.walk(img_dir):
        # print(file_name)
        img_paths += [os.path.join(src_name, i) for i in file_names]

    print(len(img_paths))

    for path in img_paths:
        try:
            detect(path, out_dir)
        except Exception as e:
            print(path, e)


save_all()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值