python使用opencv實現人臉識別系統

1.首先安裝過python環境,在這裏就不過說python

   檢測是否安裝成功以下,在cmd中輸入Pythonide

   

 

2.安裝numpy測試

  如今開始安裝numpy,打開cmd,輸入pip install numpy ui

  個人電腦已經安裝過了,忘記截屏了。就在網上找了圖片spa

  

測試是否成功code

3.安裝opencv 
在官網自行下載,這裏下載的是opencv2.4.10安裝。 
### (1)複製cv2.pyd 
將」\opencv\build\python\2.7\x64」或」\opencv\build\python\2.7\x86」(根據python版本)文件夾中找到cv2.pyd」,複製到Python安裝文件的」C:\Python27\Lib\site-packages」文件夾中。 
測試: 視頻

接下來利用opencv進行捕獲攝像頭xml

# -*- coding: utf-8 -*-
#該文件實現opencv 獲取usb攝像頭,展現實時畫面
import cv2
import sys
from PIL import Image


def CatchUsbVideo(window_name, camera_idx):
    cv2.namedWindow(window_name)

    # 視頻來源,能夠來自一段已存好的視頻,也能夠直接來自USB攝像頭
    cap = cv2.VideoCapture(camera_idx)

    while cap.isOpened():
        ok, frame = cap.read()  # 讀取一幀數據
        if not ok:
            break

            # 顯示圖像並等待10毫秒按鍵輸入,輸入‘q’退出程序
        cv2.imshow(window_name, frame)
        c = cv2.waitKey(10)
        if c & 0xFF == ord('q'):
            break

            # 釋放攝像頭並銷燬全部窗口
    cap.release()
    cv2.destroyAllWindows()


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Usage:%s camera_id\r\n" % (sys.argv[0]))
    else:
        CatchUsbVideo("截取視頻流", int(sys.argv[1]))

 

成功運行將是這個樣子blog

接下來利用opencv的物體分類器實現人臉識別圖片

 
 
# -*- coding: utf-8 -*-
#該項目實現人臉識別,使用opencv的haarcascade_frontalface_alt2.xml 人臉分類器

import cv2
import sys
from PIL import Image


def CatchUsbVideo(window_name, camera_idx):
cv2.namedWindow(window_name)

# 視頻來源,能夠來自一段已存好的視頻,也能夠直接來自USB攝像頭
cap = cv2.VideoCapture(camera_idx)

# 告訴OpenCV使用人臉識別分類器
classfier = cv2.CascadeClassifier("E:/project/opencv/build/etc/haarcascades/haarcascade_frontalface_alt2.xml")

# 識別出人臉後要畫的邊框的顏色,RGB格式
color = (0, 255, 0)

while cap.isOpened():
ok, frame = cap.read() # 讀取一幀數據
if not ok:
break

# 將當前幀轉換成灰度圖像
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# 人臉檢測,1.2和2分別爲圖片縮放比例和須要檢測的有效點數
faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(faceRects) > 0: # 大於0則檢測到人臉
for faceRect in faceRects: # 單獨框出每一張人臉
x, y, w, h = faceRect
cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)

# 顯示圖像
cv2.imshow(window_name, frame)
c = cv2.waitKey(10)
if c & 0xFF == ord('q'):
break

# 釋放攝像頭並銷燬全部窗口
cap.release()
cv2.destroyAllWindows()


if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage:%s camera_id\r\n" % (sys.argv[0]))
else:
CatchUsbVideo("face", int(sys.argv[1]))
 

效果以下

 

 

相關文章
相關標籤/搜索