使用python做一个不错的OpenCV的行人检测代码
时间: 2024-02-14 13:04:20 浏览: 27
好的,以下是一个基于OpenCV的行人检测程序示例,使用的是HOG+SVM方法:
```python
import cv2
# 加载HOG+SVM分类器
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 读取图片
img = cv2.imread("image.jpg")
# 行人检测
(rects, weights) = hog.detectMultiScale(img, winStride=(4, 4), padding=(8, 8), scale=1.05)
# 画出检测结果
for (x, y, w, h) in rects:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示结果
cv2.imshow("Pedestrian Detection", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个程序会读取名为“image.jpg”的图片,并使用HOG+SVM方法进行行人检测,然后将检测结果在图片中用红框标出,并显示出来。你可以根据自己的需要修改程序中的图片路径和其他参数。
相关问题
使用python做一个代码很长的OpenCV的行人检测代码
好的,以下是一个使用Python和OpenCV实现行人检测的示例代码:
```python
import cv2
# 加载模型
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 加载图像
image = cv2.imread("test.jpg")
# 行人检测
(rects, weights) = hog.detectMultiScale(image, winStride=(4, 4), padding=(8, 8), scale=1.05)
# 绘制检测结果
for (x, y, w, h) in rects:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示结果
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先加载了行人检测模型,然后加载了要检测的图像。接着使用`detectMultiScale`方法对图像进行行人检测,并返回检测到的矩形框及其置信度。最后,使用`rectangle`方法在原图像上绘制检测结果,并显示出来。
注意:这段代码只是一个示例,实际使用中可能需要根据不同的场景和需求进行参数调整。
使用python做一个代码非常长的OpenCV的行人检测代码
好的,以下是一个较为复杂的使用Python和OpenCV实现行人检测的示例代码:
```python
import cv2
import numpy as np
# 加载模型
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 加载视频
cap = cv2.VideoCapture('test.mp4')
# 定义帧率、窗口大小、最小检测置信度等参数
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height))
winStride = (4, 4)
padding = (8, 8)
scale = 1.05
min_confidence = 0.5
# 开始处理视频
while True:
# 读取一帧
ret, frame = cap.read()
if not ret:
break
# 行人检测
(rects, weights) = hog.detectMultiScale(frame, winStride=winStride, padding=padding, scale=scale, minNeighbors=2)
# 绘制检测结果
for i, (x, y, w, h) in enumerate(rects):
if weights[i] > min_confidence:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, f"Confidence: {round(weights[i][0], 2)}", (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# 输出视频
out.write(frame)
# 显示结果
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
```
这段代码加载了行人检测模型,并加载了一个视频文件。然后在视频中循环地读取每一帧,对每一帧进行行人检测,并将检测结果绘制在帧上。最后输出检测结果视频,并在窗口中显示检测结果。
代码中还定义了一些参数,如帧率、窗口大小、最小检测置信度等,可以根据具体需求进行调整。这段代码还加入了一些优化,如在绘制矩形框和文本时只绘制置信度大于最小置信度的检测结果,以提高检测的准确性。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)