欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于OpenCV和Gradio實現(xiàn)簡單的人臉識別詳解

 更新時間:2024年04月08日 11:44:07   作者:Livingbody  
這篇文章主要為大家詳細介紹了如何基于OpenCV和Gradio實現(xiàn)簡單的人臉識別功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

環(huán)境配置

  • gradio 安裝 pip install gradio
  • cv2 安裝 pip install python-opencv

實驗原理

cv2有預訓練模型face_cascade,可以對人臉進行檢測,檢測到人臉,繪制框框標識。

完成檢測,調(diào)用cv2進行顯示。

程序設計

# -*- coding: utf-8 -*-
"""
Created on Sun Apr 10 17:11:06 2022

@author: liujianjian
"""
import gradio as gr
import time
import cv2

#############這里需要添加絕對路徑###################
pathf = './haarcascades/haarcascade_frontalface_alt.xml'
pathe = './haarcascades/haarcascade_eye.xml'
###########################################

1.上傳圖片

上傳圖片采用gradio,直接上傳即可,或者可加入demo圖片,供選擇。

demo = gr.Interface(
    face_rec,
    gr.Image(),
    "image",    
    examples=["images/1.jpg", "images/2.jpg", "images/3.jpg", "images/4.jpg"],
)

2.人臉識別

人臉識別簡單,復制配置文件到本地,加載進去即可。

    # 轉(zhuǎn)為灰度圖
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 創(chuàng)建人臉識別分類器
    face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
    face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
    # 創(chuàng)建人眼識別分類器
    eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
    face_cascade.load('./haarcascades/haarcascade_eye.xml')
    # 檢測人臉
    faces = face_cascade.detectMultiScale(gray,
                                          scaleFactor=1.15,
                                          minNeighbors=3,
                                          flags=cv2.IMREAD_GRAYSCALE,
                                          minSize=(40, 40))

3.繪制方框

就是繪制方框了,繪制顯示即可。

    # 在人臉周圍繪制方框
    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
    # 進行眼部檢測
    eyes = eye_cascade.detectMultiScale(gray,
                                        scaleFactor=1.1,
                                        minNeighbors=3,
                                        flags=cv2.IMREAD_GRAYSCALE,
                                        minSize=(3, 3))
    for (ex, ey, ew, eh) in eyes:
        # 繪制眼部方框
        img = cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)

4.保存預測結果

調(diào)用cv2.imwrite即可,注意圖像轉(zhuǎn)換。

cv2.imwrite(f"result/{time.time_ns()}.jpg", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

5.最后運行gradio的lauch

if __name__ == "__main__":
    demo.launch()

完整代碼

# -*- coding: utf-8 -*-
"""
Created on Sun April 4 17:11:06 2023

@author: liujianjian
"""
import gradio as gr
import time
import cv2

#############這里需要添加絕對路徑###################
pathf = './haarcascades/haarcascade_frontalface_alt.xml'
pathe = './haarcascades/haarcascade_eye.xml'
###########################################

# 人臉檢測函數(shù)
def face_rec(img):
    # 轉(zhuǎn)為灰度圖
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 創(chuàng)建人臉識別分類器
    face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
    face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
    # 創(chuàng)建人眼識別分類器
    eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
    face_cascade.load('./haarcascades/haarcascade_eye.xml')
    # 檢測人臉
    faces = face_cascade.detectMultiScale(gray,
                                          scaleFactor=1.15,
                                          minNeighbors=3,
                                          flags=cv2.IMREAD_GRAYSCALE,
                                          minSize=(40, 40))

    # 在人臉周圍繪制方框
    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
    # 進行眼部檢測
    eyes = eye_cascade.detectMultiScale(gray,
                                        scaleFactor=1.1,
                                        minNeighbors=3,
                                        flags=cv2.IMREAD_GRAYSCALE,
                                        minSize=(3, 3))
    for (ex, ey, ew, eh) in eyes:
        # 繪制眼部方框
        img = cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
    
    cv2.imwrite(f"result/{time.time_ns()}.jpg", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    return img


demo = gr.Interface(
    face_rec,
    gr.Image(),
    "image",    
    examples=["images/1.jpg", "images/2.jpg", "images/3.jpg", "images/4.jpg"],
)

if __name__ == "__main__":
    demo.launch()

項目地址: https://github.com/livingbody/face_det_cv2

以上就是基于OpenCV和Gradio實現(xiàn)簡單的人臉識別詳解的詳細內(nèi)容,更多關于OpenCV Gradio人臉識別的資料請關注腳本之家其它相關文章!

相關文章

  • Python K-means實現(xiàn)簡單圖像聚類的示例代碼

    Python K-means實現(xiàn)簡單圖像聚類的示例代碼

    本文主要介紹了Python K-means實現(xiàn)簡單圖像聚類的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python模擬登錄之滑塊驗證碼的破解(實例代碼)

    Python模擬登錄之滑塊驗證碼的破解(實例代碼)

    這篇文章主要介紹了Python模擬登錄之滑塊驗證碼的破解(實例代碼),代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Python利用matplotlib繪制散點圖的新手教程

    Python利用matplotlib繪制散點圖的新手教程

    這篇文章主要給大家介紹了關于Python利用matplotlib繪制散點圖的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • python中的IO流使用解讀

    python中的IO流使用解讀

    這篇文章主要介紹了python中的IO流使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python解決js文件utf-8編碼亂碼問題(推薦)

    python解決js文件utf-8編碼亂碼問題(推薦)

    這篇文章主要介紹了python解決js文件utf-8編碼亂碼問題,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • 基于Pycharm加載多個項目過程圖解

    基于Pycharm加載多個項目過程圖解

    這篇文章主要介紹了基于Pycharm加載多個項目過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Python3 實現(xiàn)遞歸求階乘

    Python3 實現(xiàn)遞歸求階乘

    這篇文章主要介紹了Python3 實現(xiàn)遞歸求階乘的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python實現(xiàn)的下載8000首兒歌的代碼分享

    Python實現(xiàn)的下載8000首兒歌的代碼分享

    這篇文章主要介紹了Python實現(xiàn)的下載8000首兒歌的代碼分享,本文直接給出實現(xiàn)代碼,下載的是有伴網(wǎng)的資源,需要的朋友可以參考下
    2014-11-11
  • matplotlib給子圖添加圖例的方法

    matplotlib給子圖添加圖例的方法

    今天小編就為大家分享一篇matplotlib給子圖添加圖例的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 解決python圖像處理圖像賦值后變?yōu)榘咨膯栴}

    解決python圖像處理圖像賦值后變?yōu)榘咨膯栴}

    這篇文章主要介紹了解決python圖像處理圖像賦值后變?yōu)榘咨膯栴},具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論