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()
微信扫码关注
抖音扫码关注