使用opencv批量人脸识别+裁图+设置分辨率(Python代码分享)

文章提供了Python代码示例,展示了如何利用OpenCV库进行人脸识别,从图片中截取面部区域并将其裁剪为512x512的正方形。代码包括面部检测、最大正方形定位以及图像缩放等步骤。针对无法识别面部的情况,文章也给出了调整参数的建议。
摘要由CSDN通过智能技术生成

最近做LoRA模型训练时需要对一批图片进行人脸识别,并进行裁剪,然后设置特定的分辨率。
首先要导入cv库import cv2
如果没有opencv库的话要用pip先安装一个pip install opencv-python
1、识别出图片面部,并截取原图片靠近面部的最大正方形部位,同时将截取的图片分辨率改为512*512

import numpy as np
import cv2
import os

def crop_face(input_folder_path, output_folder_path):
    # 加载面部识别模型
    face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    images = os.listdir(input_folder_path)
    for image in images:
        image_path = os.path.join(input_folder_path, image)
        img = cv2.imread(image_path)
        height, width, channels = img.shape
        # 将图像转换为灰度图像
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # 检测面部
        faces = face_detector.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))

        
        # 无法识别面部的图片
        if len(faces)==0:
            print(f"No face found in {
     image_path}")
            return
    
        if len(faces) > 0:
            # 取第一个脸部位置,这里假设一张图片只有一个脸部特征
            # x、y 为人脸的像素位置,w、h 为人脸的宽度和高度。
            x, y, w, h = faces[0]
            # 确定最大正方形的位置
            # 原图片竖方向长,截取正方形长度为原图横方向长,square_size截取正方形的长度
            if height>width:
                square_size = width
                x1=0
                x2
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值