limubai的个人空间 https://blog.eetop.cn/1716315 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

如何用OpenCV进行行人检测--基于米尔全志T527开发板

已有 339 次阅读| 2025-4-11 17:48 |系统分类:嵌入式| 全志, T527, 国产处理器, opencv, 米尔电子

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。

摘自优秀创作者-小火苗



一、软件环境安装

1.在全志T527开发板安装OpenCV

sudo apt-get install libopencv-dev python3-opencv



2.在全志T527开发板安装pip

sudo apt-get install python3-pip



二、行人检测概论

使用HOG和SVM基于全志T527开发板构建行人检测器的关键步骤包括:

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

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

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

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


三、代码实现

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


四、实际操作





点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 10

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 1

    获赞
  • 1

    评论
  • 243

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-6 20:56 , Processed in 0.016414 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部