視頻人臉識別opencv

**

配置python環境

**
下載python,

python -m ensurepip  安裝pip

**

導庫

**

pip install opencv-python,
pip install numpy,
pip install matplotlib

**
**

代碼

**

#如果設置0就是調用本地攝像頭
#video=cv2.VideoCapture(0)
#獲取本地mp4視頻
video = cv2.VideoCapture("../1.mp4")
#獲取視頻默認幀數 /s
fps = video.get(propId = cv2.CAP_PROP_FPS)
#獲取每一幀的寬度
fps_w = int(video.get(propId = cv2.CAP_PROP_FRAME_WIDTH))
#獲取每一幀的高度
fps_h = int(video.get(propId=cv2.CAP_PROP_FRAME_HEIGHT))
#算出多少毫秒一幀 ms/fps
fps_millis = 1000//int(fps)
#保存路徑
video_writer = cv2.VideoWriter(r"D:\po.avi",cv2.VideoWriter_fourcc("M","P","4","2"),fps_millis,(fps_w, fps_h))
#獲取人臉識別核心文件
detector = cv2.CascadeClassifier("../haarcascade_frontalface_default.xml")
#判斷視頻是否已經關閉
while video.isOpened():
#讀取一幀,flag如果沒有讀到幀返回False,否則返回True
    flag,img = video.read()
    if flag == False:
        break
    else:
    #降維黑白圖片,降低數據處理壓力
        img2 = cv2.cvtColor(img,code = cv2.COLOR_BGR2GRAY)
         #返回人臉信息
        arr = detector.detectMultiScale(img2,scaleFactor = 1.3,minNeighbors = 5,minSize = (30, 30))
           #遍歷人臉信息
        for x,y,w,h in arr:
         #人臉區域正方形邊框
            #cv2.rectangle(img,pt1=(x,y),pt2=(x+w,y+h),color=[0,255,0],thickness=2)
            #人臉區域圓形邊框
            cv2.circle(img,center = (x+w//2, y+h//2), radius=w//2, color=[0, 255, 0],thickness = 2)
            #講讀到的幀寫入
            video_writer.write(img)
        #彈窗顯示
        cv2.imshow("ll",img)
         #按鍵監聽,如果按q關閉彈窗
        if ord("q") == cv2.waitKey(fps_millis):
            break;
cv2.destroyAllWindows()
#釋放資源
video.release()
video_writer.release()

效果:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章