查看: 103|回复: 0

[经验] 基于米尔NXP i.MX93开发板OpenCV的相机捕捉视频进行人脸检测

[复制链接]
  • TA的每日心情

    2019-10-15 10:48
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2024-11-15 17:51:34 | 显示全部楼层 |阅读模式
    分享到:
    本篇测评由优秀测评者“eefocus_3914144”提供。

    本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。
    OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头)
    1、安装python3-opencv
    1. apt install python3-opencv</font>
    复制代码

    2、查看摄像头支持的格式与分辨率
    1. root@debian:~# v4l2-ctl --device=/dev/video0 --list-formats-ext</font>
    复制代码

    经测试,只能支持640*480
    为此建立opencv_test.py
    1. import cv2
    2. video = cv2.VideoCapture(0)</font>
    复制代码

    设置相机参数
    video .set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
    video .set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
    1. while True:
    2.     ret, frame = video.read()
    3.     cv2.imshow("A video", frame)
    4. c = cv2.waitKey(1)
    5. if c == 27:
    6.     breakvideo.release()cv2.destroyAllWindows()</font>
    复制代码

    保存后执行”python3 opencv_test.py
    OpenCV装好后,可以为后面的人脸检测提供可行性。
    要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。
    OpenCV人脸检测方法
    在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多的是Haar特征人脸检测,此外OpenCV中还集成了深度学习方法来实现人脸检测。

    【参考资料】
    使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)_opencv人脸识别-CSDN博客
    【Haar级联检测器预训练模型下载】
    opencv/opencv: Open Source Computer Vision Library (github.com)
    下载好的,在opencv-4.xdatahaarcascades文件夹下有模型,把他上传到开发板。
    【获取检测人脸的图片】
    我在百度上找到了**的图片,并把它也上传到开发板。
    【编写检测代码】
    1. import numpy as np
    2. import cv2 as cv

    3. if __name__ == '__main__':
    4.     # (6) 使用 Haar 级联分类器 预训练模型 检测人脸
    5.     # 读取待检测的图片
    6.     img = cv.imread("yanmi.jpg")
    7.     print(img.shape)
    8.    
    9.     # 加载 Haar 级联分类器 预训练模型
    10.     model_path = "haarcascade_frontalface_alt2.xml"
    11.     face_detector = cv.CascadeClassifier(model_path)  # <class 'cv2.CascadeClassifier'>
    12.     # 使用级联分类器检测人脸
    13.     faces = face_detector.detectMultiScale(img, scaleFactor=1.1, minNeighbors=1,
    14.                                              minSize=(30, 30), maxSize=(300, 300))
    15.     print(faces.shape)  # (17, 4)
    16.     print(faces[0])  # (x, y, width, height)
    17.    
    18.     # 绘制人脸检测框
    19.     for x, y, width, height in faces:
    20.         cv.rectangle(img, (x, y), (x + width, y + height), (0, 0, 255), 2, cv.LINE_8, 0)
    21.      # 显示图片
    22.      cv.imshow("faces", img)
    23.      cv.waitKey(0)
    24.      cv.destroyAllWindows()
    复制代码

    【实验效果】
    运行程序后,可以正确地识别,效果如下:


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 22:28 , Processed in 0.122863 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.