中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于OpenCV和Gradio怎么實現簡單的人臉識別

發布時間:2023-05-08 17:05:05 來源:億速云 閱讀:144 作者:iii 欄目:開發技術

今天小編給大家分享一下基于OpenCV和Gradio怎么實現簡單的人臉識別的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    環境配置

    • gradio 安裝 pip install gradio

    • cv2 安裝 pip install python-opencv

    實驗原理

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

    完成檢測,調用cv2進行顯示。

    基于OpenCV和Gradio怎么實現簡單的人臉識別

    程序設計

    # -*- 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.人臉識別

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

        # 轉為灰度圖
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # 創建人臉識別分類器
        face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
        face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
        # 創建人眼識別分類器
        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.保存預測結果

    調用cv2.imwrite即可,注意圖像轉換。

    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'
    ###########################################
    
    # 人臉檢測函數
    def face_rec(img):
        # 轉為灰度圖
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # 創建人臉識別分類器
        face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
        face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
        # 創建人眼識別分類器
        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()

    以上就是“基于OpenCV和Gradio怎么實現簡單的人臉識別”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    威远县| 梁平县| 祁门县| 绍兴市| 会东县| 恩平市| 洪洞县| 湖南省| 景泰县| 邻水| 五原县| 资溪县| 天全县| 浙江省| 康平县| 明星| 三江| 中阳县| 孝义市| 育儿| 罗平县| 荆门市| 肥城市| 北宁市| 社会| 大渡口区| 公安县| 永和县| 富宁县| 休宁县| 扎囊县| 莒南县| 舟曲县| 无锡市| 类乌齐县| 霍邱县| 乐至县| 壶关县| 平阴县| 南木林县| 乃东县|