pythonopencv检测行人_【图像处理】使用OpenCV实现人脸和行人检测
时间: 2024-05-25 21:04:56 浏览: 207
使用OpenCV实现人脸和行人检测需要以下步骤:
1. 安装OpenCV库
首先需要安装OpenCV库,可以使用pip命令安装:
```
pip install opencv-python
```
2. 加载图像
使用OpenCV读取图像文件,可以使用cv2.imread()函数:
```
import cv2
image = cv2.imread('image.jpg')
```
3. 创建分类器
人脸和行人检测需要使用分类器,可以从OpenCV的GitHub仓库下载训练好的分类器文件。下载地址:
- Haar Cascades for face detection: https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
- HOG+SVM for pedestrian detection: https://github.com/opencv/opencv/blob/master/data/haarcascades/hogcascade_pedestrians.xml
下载好文件后,使用cv2.CascadeClassifier()函数创建分类器:
```
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
pedestrian_cascade = cv2.CascadeClassifier('hogcascade_pedestrians.xml')
```
4. 人脸检测
使用cv2.detectMultiScale()函数进行人脸检测,该函数可以返回检测到的人脸的坐标和大小:
```
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
```
5. 行人检测
使用cv2.HOGDescriptor()函数创建行人检测器,然后使用detectMultiScale()函数进行行人检测:
```
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
pedestrians = pedestrian_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
```
6. 绘制检测框
使用cv2.rectangle()函数在图像上绘制框出人脸和行人的矩形框:
```
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
for (x, y, w, h) in pedestrians:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
```
完整代码如下:
```
import cv2
# 加载图像
image = cv2.imread('image.jpg')
# 创建分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
pedestrian_cascade = cv2.CascadeClassifier('hogcascade_pedestrians.xml')
# 人脸检测
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 行人检测
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
pedestrians = pedestrian_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 绘制检测框
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
for (x, y, w, h) in pedestrians:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行后可以看到图像上人脸和行人的位置被框出来了。
阅读全文
相关推荐













