91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

基于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

    池州市| 任丘市| 长葛市| 出国| 光山县| 汝南县| 南京市| 陆河县| 沧源| 长葛市| 利川市| 正宁县| 建德市| 合江县| 万源市| 文山县| 闵行区| 嘉善县| 丰宁| 房产| 阜宁县| 西吉县| 桐梓县| 凭祥市| 岑溪市| 池州市| 乐东| 潮安县| 乐陵市| 广宗县| 屏边| 毕节市| 克山县| 姚安县| 崇明县| 柳江县| 土默特右旗| 重庆市| 太和县| 谢通门县| 灯塔市|