ViSP学习笔记(二十一):人脸检测

开发环境:Ubuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1
文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxygen/visp-daily/tutorial_mainpage.html

  本文主要介绍了如何使用ViSP实现人脸检测,主要是利用OpenCV中的Haar级联检测器来实现人脸检测功能的。本文主要参考了detection/face中的 tutorial-face-detector.cpp 例程。首先要获取这个例程文件并编译它

svn export https://github.com/lagadic/visp.git/trunk/tutorial/detection/face
cd face/
mkdir build
cd build 
cmake .. -DCMAKE_BUILD_TYPE=Release -DVISP_DIR=$VISP_WS/visp-build
make 

  执行例程,查看效果

./tutorial-face-detector

  
在这里插入图片描述

  下面介绍一下代码实现过程

#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayOpenCV.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/detection/vpDetectorFace.h>
#include <visp3/io/vpVideoReader.h>
int main(int argc, const char *argv[])
{
#if (VISP_HAVE_OPENCV_VERSION >= 0x020200) && defined(VISP_HAVE_OPENCV_OBJDETECT)
  try {
    std::string opt_face_cascade_name = "./haarcascade_frontalface_alt.xml";//Haar级联检测器参数文件
    std::string opt_video = "video.mp4";//视频文件
    for (int i = 0; i < argc; i++) {
      if (std::string(argv[i]) == "--haar")
        opt_face_cascade_name = std::string(argv[i + 1]);
      else if (std::string(argv[i]) == "--video")
        opt_video = std::string(argv[i + 1]);
      else if (std::string(argv[i]) == "--help" || std::string(argv[i]) == "-h") {
        std::cout << "Usage: " << argv[0]
                  << " [--haar <haarcascade xml filename>] [--video <input video file>]"
                  << " [--help] [-h]"
                  << std::endl;
        return 0;
      }
    }
    vpImage<unsigned char> I;
    vpVideoReader g;
    g.setFileName(opt_video);
    g.open(I);
#if defined(VISP_HAVE_X11)
    vpDisplayX d(I);
#elif defined(VISP_HAVE_GDI)
    vpDisplayGDI d(I);
#elif defined(VISP_HAVE_OPENCV)
    vpDisplayOpenCV d(I);
#endif
    vpDisplay::setTitle(I, "ViSP viewer");
    vpDetectorFace face_detector;//创建人脸检测容器
    face_detector.setCascadeClassifierFile(opt_face_cascade_name);//设置级联分类器的参数
    bool exit_requested = false;
    while (!g.end() && !exit_requested) {
      g.acquire(I);
      vpDisplay::display(I);
      bool face_found = face_detector.detect(I);//执行人脸检测
      if (face_found) {
        std::ostringstream text;
        text << "Found " << face_detector.getNbObjects() << " face(s)";//获取人脸数量
        vpDisplay::displayText(I, 10, 10, text.str(), vpColor::red);
        for (size_t i = 0; i < face_detector.getNbObjects(); i++) {
          vpRect bbox = face_detector.getBBox(i);//获取人脸边界框
          vpDisplay::displayRectangle(I, bbox, vpColor::green, false, 4);
          vpDisplay::displayText(I, (int)bbox.getTop() - 10, (int)bbox.getLeft(),
                                 "Message: \"" + face_detector.getMessage(i) + "\"", vpColor::red);
        }
      }
      vpDisplay::displayText(I, (int)I.getHeight() - 25, 10, "Click to quit...", vpColor::red);
      vpDisplay::flush(I);
      if (vpDisplay::getClick(I, false)) // a click to exit
        exit_requested = true;
    }
    if (!exit_requested)
      vpDisplay::getClick(I);
  } catch (const vpException &e) {
    std::cout << e.getMessage() << std::endl;
  }
#else
  (void)argc;
  (void)argv;
#endif
}

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个问题是由于在运行"sudo apt-get update"命令时,无法获取到"http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo/dists/focal/InRelease"这个链接的资源,返回了403 Forbidden的错误。\[1\]\[2\] 根据引用\[3\]中提到的解决方法,你可以尝试编辑"/etc/apt/source.list"文件,并将"http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo/dists/focal"这个源的勾选去掉,然后选择"https://librealsense.intel.com/Debian/apt-repo"这个选项。然后再次运行"sudo apt-get update"命令,应该就能成功更新了。 请注意,这个解决方法是基于引用\[3\]中提到的情况,如果你的情况不同,可能需要采取其他的解决方法。 #### 引用[.reference_title] - *1* *3* [实验日志二: Sawyer IBVS control____Visp以及visp-ros平台的安装](https://blog.csdn.net/Maomaokingya/article/details/121086729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决E: 仓库 “http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic InRelease” 没有...](https://blog.csdn.net/weixin_45498383/article/details/128592673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值