国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用opencv批量人臉識(shí)別+裁圖+設(shè)置分辨率(Python代碼分享)

這篇具有很好參考價(jià)值的文章主要介紹了使用opencv批量人臉識(shí)別+裁圖+設(shè)置分辨率(Python代碼分享)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近做LoRA模型訓(xùn)練時(shí)需要對(duì)一批圖片進(jìn)行人臉識(shí)別,并進(jìn)行裁剪,然后設(shè)置特定的分辨率。
首先要導(dǎo)入cv庫(kù)import cv2
如果沒有opencv庫(kù)的話要用pip先安裝一個(gè)pip install opencv-python
1、識(shí)別出圖片面部,并截取原圖片靠近面部的最大正方形部位,同時(shí)將截取的圖片分辨率改為512*512

import numpy as np
import cv2
import os

def crop_face(input_folder_path, output_folder_path):
    # 加載面部識(shí)別模型
    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
        # 將圖像轉(zhuǎn)換為灰度圖像
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # 檢測(cè)面部
        faces = face_detector.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))

        
        # 無(wú)法識(shí)別面部的圖片
        if len(faces)==0:
            print(f"No face found in {image_path}")
            return
    
        if len(faces) > 0:
            # 取第一個(gè)臉部位置,這里假設(shè)一張圖片只有一個(gè)臉部特征
            # x、y 為人臉的像素位置,w、h 為人臉的寬度和高度。
            x, y, w, h = faces[0]
            # 確定最大正方形的位置
            # 原圖片豎方向長(zhǎng),截取正方形長(zhǎng)度為原圖橫方向長(zhǎng),square_size截取正方形的長(zhǎng)度
            if height>width:
                square_size = width
                x1=0
                x2=square_size
                # 原圖面部靠上
                if y<square_size/2:
                    y1=0
                    y2 =square_size
                # 原圖面部靠下
                else:
                    y1=int(square_size/2)
                    y2 =height
           # 原圖片是橫方向長(zhǎng),截取正方形長(zhǎng)度為原圖豎方向長(zhǎng)度      
            else:
                square_size =  height
                y1=0
                y2=square_size
                # 原圖面部靠右
                if x<square_size/2:
                    x1=0
                    x2 =square_size
                # 原圖面部靠左
                else:
                    x1=int(square_size/2)
                    x2 =square_size
                
                
            # 根據(jù)最大正方形位置裁剪圖片并保存
            cropped_img = img[y1:y2, x1:x2] 
            # 調(diào)整圖像大小為512x512
            resized = cv2.resize(cropped_img, (512, 512), interpolation=cv2.INTER_AREA)
            output_path = os.path.join(output_folder_path,image)
            cv2.imwrite(output_path, resized)


if __name__ == "__main__":
    input_folder = r"輸入圖片所在文件夾路徑" 
    output_folder = r"輸出圖片所在文件夾路徑"  
    # 創(chuàng)建輸出目錄
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    crop_face(input_folder, output_folder)
    print('Done!')

opencv實(shí)現(xiàn)多人臉識(shí)別,自動(dòng)化辦公,opencv,python,計(jì)算機(jī)視覺
opencv實(shí)現(xiàn)多人臉識(shí)別,自動(dòng)化辦公,opencv,python,計(jì)算機(jī)視覺

可以看到a1(7)這張圖片,模型無(wú)法識(shí)別,大家做的時(shí)候根據(jù)實(shí)際情況,調(diào)整這個(gè)位置的參數(shù),以提高識(shí)別的準(zhǔn)確度。

faces = face_detector.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))

scaleFactor:表示在前后兩次相繼的掃描中,搜索窗口的比例系數(shù)。默認(rèn)為1.1即每次搜索窗口依次擴(kuò)大10%。可以根據(jù)圖像的像素值來(lái)設(shè)置此參數(shù),像素大縮小的速度就可以快一點(diǎn),通常在1~1.5之間。

minNeighbors:表示構(gòu)成檢測(cè)目標(biāo)的相鄰矩形的最小個(gè)數(shù)(默認(rèn)為3個(gè))。是在人臉附近進(jìn)行指定次數(shù)的檢測(cè),獲取最準(zhǔn)確的范圍,設(shè)置越高,誤檢率越低,但是對(duì)于迷糊圖片,設(shè)置越高,越不易檢測(cè)出來(lái),要適當(dāng)降低。

2、以面部為中心,截取的最大正方形

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))
        
        # 無(wú)法識(shí)別面部的圖片
        if len(faces)==0:
            print(f"No face found in {image_path}")
            return
        
        if len(faces) > 0:
            # 取第一個(gè)臉部位置,這里假設(shè)一張圖片只有一個(gè)臉部特征
            x, y, w, h = faces[0]
            # 確定最大正方形的位置
            square_size=min(width-x,x,y,height-y)
           
                
            # 根據(jù)最大正方形位置裁剪圖片并保存
            cropped_img = img[y-square_size:y+h+square_size, x-square_size:x+w+square_size] #img[y1:y2, x1:x2]
            # 調(diào)整圖像大小為512x512
            resized = cv2.resize(cropped_img, (512, 512), interpolation=cv2.INTER_AREA)
            output_path = os.path.join(output_folder_path, image)
            cv2.imwrite(output_path, resized)


if __name__ == "__main__":
    input_folder = r"輸入圖片所在文件夾路徑"  
    output_folder = r"輸出圖片所在文件夾路徑" 
    # 創(chuàng)建輸出目錄
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    crop_face(input_folder, output_folder)
    print('Done!')

opencv實(shí)現(xiàn)多人臉識(shí)別,自動(dòng)化辦公,opencv,python,計(jì)算機(jī)視覺
3、只截取人臉部分

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=7, minSize=(30, 30))
        
        # 無(wú)法識(shí)別面部的圖片
        if len(faces)==0:
            print(f"No face found in {image_path}")
            return
        
        for (x,y,w,h) in faces:
            cropped_img = img[y:y+h, x:x+w]  
            # 調(diào)整圖像大小為512x512
            resized = cv2.resize(cropped_img, (512, 512), interpolation=cv2.INTER_AREA)
            # 將圖像保存到輸出目錄
            output_path = os.path.join(output_folder_path, image)
            cv2.imwrite(output_path, resized)
            
if __name__ == "__main__":
    input_folder = r"輸入圖片所在文件夾路徑"  
    output_folder = r"輸出圖片所在文件夾路徑"  
    # 創(chuàng)建輸出目錄
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    crop_face(input_folder, output_folder)
    print('Done!')

opencv實(shí)現(xiàn)多人臉識(shí)別,自動(dòng)化辦公,opencv,python,計(jì)算機(jī)視覺文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-519302.html

到了這里,關(guān)于使用opencv批量人臉識(shí)別+裁圖+設(shè)置分辨率(Python代碼分享)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊(duì)列 - 音視頻編碼 - 音視頻包隊(duì)列 - 格式封裝 的過(guò)程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(101)
  • windows多顯示器設(shè)置分辨率,自定義分辨率

    windows多顯示器設(shè)置分辨率,自定義分辨率

    方法1:系統(tǒng)自帶分辨率 1、單機(jī)設(shè)置 2、單擊屏幕 3、根據(jù)顯示效果選擇顯示方式,我這里設(shè)置為擴(kuò)展顯示器,可以根據(jù)顯示器排列方式,拖動(dòng)上面的兩個(gè)顯示器框來(lái)更改顯示效果,例如我的副顯示器在右邊就把圖中的2顯示器拖到右邊 4、根據(jù)需要設(shè)置哪個(gè)顯示器來(lái)設(shè)置分辨率

    2024年02月06日
    瀏覽(26)
  • Arch Linux高分辨率屏幕設(shè)置分辨率及dpi縮放

    由于筆記本原生屏幕分辨率太渣,于是購(gòu)入一塊2440x1400、14英寸副屏。窗口管理器為dwm,使用 startx 命令進(jìn)入環(huán)境 注 :此文不會(huì)改變tty的設(shè)置,僅設(shè)置xorg下某用戶的個(gè)人設(shè)置 關(guān)閉筆記本屏幕,只使用副屏 副屏分辨率設(shè)置為最高,且屏幕縮放設(shè)置為合適大小 高分辨率小屏幕導(dǎo)致

    2024年02月05日
    瀏覽(41)
  • unity怎么設(shè)置分辨率

    要設(shè)置Unity中的游戲分辨率(最終發(fā)布),有以下兩種方法: 其中,Screen.SetResolution()函數(shù)用于設(shè)置游戲分辨率,參數(shù)含義分別為寬度、高度和是否全屏。需要注意的是,在不同的設(shè)備上使用固定的分辨率可能會(huì)導(dǎo)致顯示效果失真或變形,因此最好根據(jù)具體設(shè)備和游戲的需求進(jìn)

    2024年02月12日
    瀏覽(23)
  • 【linux】opencv修改攝像頭分辨率

    【linux】opencv修改攝像頭分辨率

    發(fā)現(xiàn)linux系統(tǒng)下調(diào)用opencv修改攝像頭分辨率,一直修改不成功。 正常在window下面讀取攝像頭數(shù)據(jù)是如下代碼: 但是在Ubuntu下沒辦法修改攝像頭分辨率,一直都是640x360。 懷疑是攝像頭的問(wèn)題,使用linux下的 v4l2 查看usb攝像頭支持的分辨率 1. 查看目前有的攝像頭設(shè)備 0代表實(shí)際

    2024年02月14日
    瀏覽(18)
  • OpenCV——多分辨率LBP的計(jì)算方法

    OpenCV——多分辨率LBP的計(jì)算方法

    OpenCV——多分辨率LBP的計(jì)算方法由CSDN點(diǎn)云俠原創(chuàng),爬蟲自重。如果你不是在點(diǎn)云俠的博客中看到該文章,那么此處便是不要臉的爬蟲。 ??基本LBP算子雖然在早期的實(shí)驗(yàn)中取得了一系列成果,但是應(yīng)用于不同領(lǐng)域的具體問(wèn)題時(shí),該算子的處理結(jié)果并不能達(dá)到預(yù)期的效果。因

    2024年01月23日
    瀏覽(17)
  • UE4 雙屏分辨率設(shè)置

    UE4 雙屏分辨率設(shè)置

    背景: 做了一個(gè)UI 應(yīng)用,需要在雙屏上進(jìn)行顯示。 分辨率如下:3840*1080; 各種折騰,其實(shí)很簡(jiǎn)單: 主要是在全屏模式的時(shí)候 一開始沒有選對(duì),雙屏總是不穩(wěn)定。? 全屏模式改成:Windows 之后 ,雙屏的問(wèn)題就解決了。 沒有其他帖子說(shuō)的那么麻煩 還得改ini 配置文件之類的。

    2024年02月04日
    瀏覽(23)
  • AutoX.js - openCV多分辨率找圖

    AutoX.js - openCV多分辨率找圖

    AutoXjs 中有兩個(gè)找圖相關(guān)的方法 findImage 和 matchTemplate,之前一直沒發(fā)現(xiàn)什么問(wèn)題,但最近在一次測(cè)試找圖時(shí),明明大圖和模板圖的輪廓都清晰,卻怎么也找不到圖,降低閾值參數(shù)后找到的結(jié)果亂七八糟,我仔細(xì)對(duì)比圖像后發(fā)現(xiàn)原因,竟是大圖相較于模板摳圖時(shí)的畫面等比縮小

    2024年02月06日
    瀏覽(33)
  • unity設(shè)置分辨率的兩種方法

    unity設(shè)置分辨率的兩種方法 使用Unity編輯器中的分辨率設(shè)置工具。打開Unity編輯器,選擇菜單欄中的“Edit” - “Project Settings” - “Player”,在“Resolution and Presentation”選項(xiàng)卡中選擇想要的分辨率,然后點(diǎn)擊“Apply”按鈕即可。 使用腳本設(shè)置分辨率。在Unity中創(chuàng)建一個(gè)腳本,使

    2024年02月11日
    瀏覽(27)
  • 反射UnityEditor.GameView設(shè)置GamePlayMode分辨率

    反射UnityEditor.GameView設(shè)置GamePlayMode分辨率

    現(xiàn)在很有游戲考慮橫屏適配、豎屏適配、阿拉伯語(yǔ)適配(橫豎屏)導(dǎo)致拼界面變得越來(lái)越繁瑣。 有很多時(shí)候需要記錄各個(gè)控件的狀態(tài)。 為了減少操作,特意制作了這個(gè)工具,點(diǎn)擊用x配置可以自動(dòng)切換到 寬高分辨率,如果當(dāng)前沒有則會(huì)自動(dòng)添加到編輯器中。這里特別感謝開源

    2024年02月02日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包