小強學Python+OpenCV之-1.0開篇
寫在前面:
有沒有想過使用Python + OpenCV來實現人臉識別?
想想就有點小興奮吧。
小強也是不久前才了解到可以使用Python + OpenCV進行圖像處理。覺得有趣就想學習一下。
在這裡,把我學到的小知識記錄一下,也為了自己以後方便查看。
也希望有相同興趣的同學搭個伴,一起學習。更希望得到大牛們的指點和鼓勵。
完成此課後,我設置的終極目標有下面幾個:
1. 實現停車場的車牌識別系統,併到天橋上去做實驗
2. 手勢識別?
3. 道路標線識別?自動駕駛?
4. 標誌圖形識別?跟蹤?四軸飛行器?
5. ……發揮想像,一切和圖像識別有關的東東
6. Deep learning?
下面進入正題。
編輯一個python腳本,取名為face_detect.py
鍵入以下內容並保存。
# 導入opencv庫
import cv2
# 載入圖像
image = cv2.imread("messi.jpg")
# 顯示我們的原始圖像到屏幕上
cv2.imshow("Faces", image)
# 等待鍵盤輸出
cv2.waitKey(0)
# 將圖像轉成灰度圖像
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# 載入人臉分類檢測器(這個分類檢測器可以在opencv的安裝路徑xxx/OpenCV/haarcascade下找到)
detector =cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 識別人臉,得到人臉所在的矩形區域(可能會得到多個人臉,所以這裡是一個list)
rects = detector.detectMultiScale(gray,scaleFactor=1.05, minNeighbors=7,
minSize=(30,30), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
# 遍歷list中每個識別到的人臉區域,並在原始圖像上沿該區域的邊界畫一個顏色為綠色、線寬為2個像素的邊框
for (x, y, w, h) in rects:
cv2.rectangle(image,(x, y), (x + w, y + h), (0, 255, 0), 2)
# 將圖像顯示在屏幕上,
cv2.imshow("Faces", image)
# 等待鍵盤輸出
cv2.waitKey(0)
保存之後,在終端中執行
python detect_faces.py
首先顯示的是我們的原始圖像。