小火苗 发表于 2024-11-15 13:31

【米尔-全志 T527 开发板-试用评测】-OpenCV行人检测

<h1>一、软件环境安装</h1>

<h3>1.安装OpenCV</h3>

<div>sudo apt-get install libopencv-dev python3-opencv</div>

<div></div>

<h3>2.安装pip</h3>

<div>sudo apt-get install python3-pip</div>

<div></div>

<h1>二、行人检测概论</h1>

<div>使用HOG和SVM构建行人检测器的关键步骤包括:</div>

<div>准备训练数据集:训练数据集应包含大量正样本(行人图像)和负样本(非行人图像)。</div>

<div>计算HOG特征:对于每个图像,计算HOG特征。HOG特征是一个一维向量,其中每个元素表示图像中特定位置和方向的梯度强度。</div>

<div>训练SVM分类器:使用HOG特征作为输入,训练SVM分类器。SVM分类器将学习区分行人和非行人。</div>

<div>评估模型:使用测试数据集评估训练后的模型。计算模型的准确率、召回率和F1分数等指标。</div>

<p><span style="font-size: 24px;">三、代码实现</span><br />
import cv2<br />
import time<br />
def detect(image,scale):<br />
imagex=image.copy() #函数内部做个副本,让每个函数运行在不同的图像上<br />
hog = cv2.HOGDescriptor() #初始化方向梯度直方图描述子<br />
#设置SVM为一个预先训练好的行人检测器<br />
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())<br />
#调用函数detectMultiScale,检测行人对应的边框<br />
time_start = time.time() #记录开始时间<br />
#获取(行人对应的矩形框、对应的权重)<br />
(rects, weights) = hog.detectMultiScale(imagex,scale=scale)<br />
time_end = time.time() #记录结束时间<br />
# 绘制每一个矩形框<br />
for (x, y, w, h) in rects:<br />
cv2.rectangle(imagex, (x, y), (x + w, y + h), (0, 0, 255), 2)<br />
print(&quot;sacle size:&quot;,scale,&quot;,time:&quot;,time_end-time_start)<br />
name=str(scale)<br />
cv2.imshow(name, imagex) #显示原始效果<br />
image = cv2.imread(&quot;back.jpg&quot;)<br />
detect(image,1.01)<br />
detect(image,1.05)<br />
detect(image,1.3)<br />
cv2.waitKey(0)<br />
cv2.destroyAllWindows()</p>

<p><span style="font-size: 24px;">四、实际操作</span></p>

<div></div>

<div></div>

<p><!--importdoc--></p>

Jacktang 发表于 2024-11-16 09:15

<p>OpenCV行人检测代码不会这么少吧</p>

小火苗 发表于 2024-11-18 11:24

Jacktang 发表于 2024-11-16 09:15
OpenCV行人检测代码不会这么少吧

<p>调用库调用完了 不就很简洁了嘛</p>
页: [1]
查看完整版本: 【米尔-全志 T527 开发板-试用评测】-OpenCV行人检测