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]))
效果以下