OpenCV 行人偵測
這篇教學會介紹使用 OpenCV,搭配人體特徵模型,偵測影像中的行人,並透過繪製形狀的方式,使用方框標記偵測到的行人,實現類似 AI 影像辨識的效果。
快速導覽:
因為程式中的 OpenCV 會需要使用鏡頭或 GPU,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda ) ,並安裝 OpenCV 函式庫 ( 參考:OpenCV 函式庫 )。
下載行人特徵模型
OpenCV 的官方 Github 提供了許多訓練好的特徵模型,從下方網址下載人體特徵模型,下載後將 xml 檔案和 Python 的程式檔放在同一層目錄下。
- OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data
- 人體特徵模型:haarcascade_fullbody.xml
偵測影像中的行人
下方的例子執行後,會偵測影像中的行人,並透過繪製形狀的方式,使用方框標記偵測到的行人,如果有發生偵測到不是行人的形狀,可以調整 scaleFactor 和 minNeighbors 參數再重新偵測。
import cv2
img = cv2.imread('cars.jpg') # 讀取街道影像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 轉換成黑白影像
car = cv2.CascadeClassifier("haarcascade_fullbody.xml") # 讀取人體模型
gray = cv2.medianBlur(gray, 5) # 模糊化去除雜訊
cars = car.detectMultiScale(gray, 1.1, 3) # 偵測行人
for (x, y, w, h) in cars:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 繪製外框
cv2.imshow('oxxostudio', img)
cv2.waitKey(0) # 按下任意鍵停止
cv2.destroyAllWindows()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~