Opencv目标检测
时间: 2024-12-30 19:23:37 浏览: 6
### 使用OpenCV实现目标检测
#### Haar Cascade分类器简介
Haar特征是一种用于物体识别的机器学习算法。通过训练大量正负样本图像,可以构建出能够区分特定对象(如人脸、眼睛等)的分类器模型[^1]。
#### 准备工作
为了使用预训练好的Haar级联文件来进行目标检测,需要先下载对应的XML配置文件。这些文件可以从GitHub上的OpenCV仓库获取,路径通常位于`opencv/data/haarcascades/`目录下。
#### 加载并初始化分类器
下面是一个简单的Python代码片段来加载一个预先训练的人脸检测模型:
```python
import cv2
# 创建CascadeClassifier对象, 参数为haar特征的xml文件位置
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
```
#### 执行目标检测操作
一旦有了分类器实例,就可以调用其`detectMultiScale()`函数对输入图片执行多尺度滑动窗口扫描,寻找可能存在的匹配区域:
```python
img = cv2.imread('people.jpg') # 读取测试图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.1, # 图像尺寸缩放比例因子
minNeighbors=5, # 每个候选矩形应保留多少邻居
minSize=(30, 30), # 对象最小可能大小
flags=cv2.CASCADE_SCALE_IMAGE
)
```
对于每一个找到的对象,在原图上绘制边界框以便可视化结果:
```python
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow("Faces found", img)
cv2.waitKey(0)
```
上述过程展示了如何利用OpenCV中的Haar Cascade分类器完成基本的目标检测任务。当然除了人脸识别外,还可以针对其他类型的物体创建相应的分类器。
阅读全文