2020年11月19日 星期四

openCV-批量靜態照片人臉識別

 什麼是openCV?

以下是wiki的描述

簡而言之
openCV是運用視覺演算法來實現辨識能力,由如人的眼睛
所見,傳送到腦進行辨識處理,進而做出回應,運用上,現在
廣範運用在機器視覺的開發如下:


首先在window10上安裝openCV

pip install opencv-python

一般安裝時會同時安裝numpy,因為要進行運算

安裝好後先來試一試秀出圖片

cv2.imread()---讀取圖檔
cv2.imshow()---秀出圖檔
cv2.imwrite()---輸出圖檔
cv2.waitkey(0)---秀出圖片,等待指令才結束圖框

import cv2
img=cv2.imread('a.jpg') #注意路徑
cv2.imshow('myImg', img) 'myImg'為圖片框的名稱,自行更改
cv2.waitKey(0)



現在依上面的結構再增加人臉識別框

要先去下載並解壓人臉識別特徵檔haarcascade_frontalface_default.xml


載入分類器
face_cascede=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

偵測人臉並用方框劃出人臉
faces=face_cascede.detectMultiScale(img)
        for (x,y,w,h) in faces:
            cv2.rectangle(img, (x,y),(x+w, y+h), (0,255,0),2) #(0, 255, 0)方框顏色

完整程式碼如下:

import cv2
import os

path=r'D:\暫存'
face_cascede=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
num=0
for filename in os.listdir():
    print(filename)
    if filename.endswith('.jpg'):
        img=cv2.imread(filename)
        faces=face_cascede.detectMultiScale(img)
        for (x,y,w,h) in faces:
            cv2.rectangle(img, (x,y),(x+w, y+h), (0,255,0),2)
        cv2.imwrite(str(num)+'.jpg', img)
        cv2.imshow('girl', img)
    num+=1


輸出結果雖然不儘人意,但還算勉強😁






特美的 !!!!!我是說框做的特美的😂




沒有留言:

張貼留言