<form id="3hdj5"></form>

<form id="3hdj5"></form>

        <noframes id="3hdj5"><form id="3hdj5"><nobr id="3hdj5"></nobr></form>

          <form id="3hdj5"></form>

          <noframes id="3hdj5">

          五分鐘快速搭建一個實時人臉口罩檢測系統(OpenCV+PaddleHub 含源碼)

          導讀

          本文主要介紹如何使用OpenCV和PaddleHub實現一個實時人臉口罩檢測系統。(公眾號:OpenCV與AI深度學習)

          背景介紹

          ? ??從19年疫情爆發到現在,佩戴口罩對大家來說已是常態。應運而生的就有了很多相關應用,如病毒發展預測、口罩佩戴檢測以及戴口罩的人臉識別等。

          ????今天介紹的人臉口罩佩戴檢測系統主要使用OpenCV和百度飛漿(PaddlePaddle)的PaddleHub提供的檢測模型。PaddleHub提供了很多實用的模型,包括圖像處理、文字處理、音頻處理、視頻處理和工業應用等。github地址:https://github.com/PaddlePaddle/PaddleHub

          人臉口罩檢測

          ? ? 人臉檢測部分的模型如下:

          ????紅框內的兩個模型支持人臉口罩檢測,這里選擇pyramidbox_lite_server_mask,實現詳細步驟:

          【1】安裝PaddlePaddle、PaddleHub和OpenCV(opencv-python)

          pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn
          pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn
          pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn

          ????本文使用的版本:

          ????PaddlePaddle---2.3.0

          ????PaddleHun---2.2.0

          ????opencv-python---4.6.0.66

          ????注意:安裝PaddlePaddle可能會遇到一些問題,導致import paddle失敗,大家根據報錯信息搜索解決方法即可。

          【2】圖片人臉口罩檢測

          ????準備待測圖,運行下面代碼,修改圖片路徑即可:

          import paddlehub as hub
          import cv2
          
          mask_detector = hub.Module(name="pyramidbox_lite_server_mask")
          img_path = './imgs/A0.png'
          img = cv2.imread(img_path)
          
          input_dict = {"data": [img]}
          result = mask_detector.face_detection(data=input_dict)
          
          count = len(result[0]['data'])
          if count < 1:
            print('There is no face detected!')
          else:
            for i in range(0,count):
          
              #print(result[0]['data'][i])
              label = result[0]['data'][i].get('label')
              score = float(result[0]['data'][i].get('confidence'))
              x1 = int(result[0]['data'][i].get('left'))
              y1 = int(result[0]['data'][i].get('top'))
              x2 = int(result[0]['data'][i].get('right'))
              y2 = int(result[0]['data'][i].get('bottom'))
              cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
              if label == 'NO MASK':
                cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
              else:
                cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
           
          cv2.imwrite('result.jpg',img)
          cv2.imshow('mask-detection', img)
          cv2.waitKey()
          cv2.destroyAllWindows()
          print('Done!')

          ?

          ?代碼開始第一次會先下載對應的模型到如下位置:

          ????C:\Users\xxx\.paddlehub\modules,以后不用再下載

          測試圖1:

          運行結果:

          測試圖2:

          運行結果:

          測試圖3:

          運行結果:

          測試圖4:

          運行結果:

          ????從上面測試結果來看,效果還不錯!

          【3】視頻或攝像頭實時人臉口罩檢測

          ????準備測試視頻或直接打開攝像頭檢測,選擇對應的代碼即可:

          cap = cv2.VideoCapture('2.mp4') #視頻文件檢測# cap?=?cv2.VideoCapture(0)?#攝像頭檢測

          ?完整代碼:

          
          import paddlehub as hub
          import cv2
          
          mask_detector = hub.Module(name="pyramidbox_lite_server_mask")
          
          def mask_detecion(img):
            input_dict = {"data": [img]}
            result = mask_detector.face_detection(data=input_dict) 
            count = len(result[0]['data'])
            if count < 1:
              #print('There is no face detected!')
              pass
            else:
              for i in range(0,count):
                #print(result[0]['data'][i])
                label = result[0]['data'][i].get('label')
                score = float(result[0]['data'][i].get('confidence'))
                x1 = int(result[0]['data'][i].get('left'))
                y1 = int(result[0]['data'][i].get('top'))
                x2 = int(result[0]['data'][i].get('right'))
                y2 = int(result[0]['data'][i].get('bottom'))
                cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
                if label == 'NO MASK':
                  cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
                else:
                  cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
            return img
          
          
          if __name__ == '__main__':
            cap = cv2.VideoCapture('2.mp4') #視頻文件檢測
            #cap = cv2.VideoCapture(0) #攝像頭檢測
            if(cap.isOpened()): #視頻打開成功
              while(True):
                ret,frame = cap.read()#讀取一幀
                result = mask_detecion(frame)
                cv2.imshow('mask_detection',result)
                if cv2.waitKey(1)&0xFF ==27: #按下Esc鍵退出
                  break
            else:
              print ('open video/camera failed!')
            cap.release()
            cv2.destroyAllWindows()

          ???測試結果:

          下載1:Pytoch常用函數手冊

          在「OpenCV與AI深度」號后臺回復:Pytorch函數手冊能夠學習下載全網第一份Pytorch函數常用手冊,包括Tensors介紹、基礎函數介紹、數據處理函數、優化函數、CUDA編程、多處理等十四章內容。

          下載2:145個OpenCV實例應用代碼

          在「OpenCV與AI深入」公眾號后臺回復:OpenCV145能夠學習下載145個OpenCV實例應用代碼(Python和C++雙語言實現)。

          ?

          評論 5 您還未登錄,請先 登錄 后發表或查看評論
          相關推薦

          “相關推薦”對你有幫助么?

          • 非常沒幫助
          • 沒幫助
          • 一般
          • 有幫助
          • 非常有幫助
          提交
          ??2022 CSDN 皮膚主題:精致技術 設計師:CSDN官方博客 返回首頁

          打賞作者

          Color Space

          你的鼓勵將是我創作的最大動力

          ¥2 ¥4 ¥6 ¥10 ¥20
          輸入1-500的整數
          余額支付 (余額:-- )
          掃碼支付
          掃碼支付:¥2
          獲取中
          掃碼支付

          您的余額不足,請更換掃碼支付或充值

          打賞作者

          實付
          使用余額支付
          點擊重新獲取
          掃碼支付
          錢包余額 0

          抵扣說明:

          1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
          2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

          余額充值
          狠狠激情五月丁香免费视频