python opencv Haar分类器 物体检测算法获得目标框和类别信息 并存储到list中
时间: 2024-02-23 08:02:29 浏览: 130
好的,这个问题我可以回答。使用 OpenCV 中的 Haar 分类器进行物体检测可以通过以下步骤来实现:
1. 导入所需库和模块:
```python
import cv2
import numpy as np
```
2. 加载 Haar 分类器模型:
```python
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
```
3. 读取图像并进行灰度转换:
```python
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
4. 使用分类器进行物体检测:
```python
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
```
其中,`scaleFactor` 和 `minNeighbors` 是分类器的参数,可根据需要进行调整。
5. 遍历检测到的物体并存储到列表中:
```python
objects = []
for (x, y, w, h) in faces:
object_info = {'class': 'face', 'box': [x, y, x+w, y+h]}
objects.append(object_info)
```
其中,`x`、`y`、`w`、`h` 是检测到的物体的坐标和大小,`object_info` 是一个字典,包含检测到的物体的类别和边框信息,最后将其添加到 `objects` 列表中。
完整的代码如下:
```python
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
objects = []
for (x, y, w, h) in faces:
object_info = {'class': 'face', 'box': [x, y, x+w, y+h]}
objects.append(object_info)
print(objects)
```
其中,`test.jpg` 是待检测的图像文件名,`haarcascade_frontalface_default.xml` 是 Haar 分类器模型文件名,需要下载并保存到本地。
阅读全文
相关推荐

















