ubuntu dlib 编译 人脸检测

news2024/11/13 15:20:30

编译:

ubuntu14.04 + dlib19.2+【 C++ 】+Face Landmark Detection_FR-0912的博客-CSDN博客

 

也可这样

cmake .. -DUSE_AVX_INSTRUCTIONS=1
cmake --build .

测试代码

linux安装dlib,关键点检测_dlib linux_Peanut_范的博客-CSDN博客

CmakeList.txt

cmake_minimum_required(VERSION 3.5)


PROJECT(dlib_facedetector)   #设置工程名

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O2 -DDLIB_JPEG_SUPPORT")

IF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything")
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
ENDIF()

#INCLUDE OPENCV
FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
message(STATUS "Opencv include dir found at ${OpenCV_INCLUDE_DIRS}")

#包含头文件
INCLUDE_DIRECTORIES(/home/jason/file/dlib) #dlib根目录地址

LINK_DIRECTORIES(/home/jason/file/dlib/build/dlib) #dlib编译后bulid下dlib地址

#生产类似于.exe的可执行文件
ADD_EXECUTABLE(dlib_facedetector main.cpp)
#链接库
TARGET_LINK_LIBRARIES(dlib_facedetector dlib ${OpenCV_LIBS})
#TARGET_LINK_LIBRARIES(dlib_detector libjpeg.so)

main.cpp

#include <dlib/opencv.h>
#include <opencv2/opencv.hpp>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/render_face_detections.h>
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>

using namespace dlib;
using namespace std;

int main()
{
    try
    {

        // Load face detection and pose estimation models.
        frontal_face_detector detector = get_frontal_face_detector();
        shape_predictor pose_model;
        deserialize("/home/jason/file/dlib/shape_predictor_68_face_landmarks.dat") >> pose_model;

        // Grab a frame
        string path = "/home/jason/work/01-img/shuchang.png";
        cv::Mat temp = cv::imread(path);

        cv_image<bgr_pixel> cimg(temp);
        // Detect faces
        std::vector<rectangle> faces = detector(cimg);
        // Find the pose of each face.
        std::vector<full_object_detection> shapes;
        for (unsigned long i = 0; i < faces.size(); ++i)
            shapes.push_back(pose_model(cimg, faces[i]));

        if (!shapes.empty()) {
            for (int i = 0; i < 68; i++) {
                circle(temp, cvPoint(shapes[0].part(i).x(), shapes[0].part(i).y()), 3, cv::Scalar(0, 0, 255), -1);
                //	shapes[0].part(i).x();//68个
            }
        }
        imshow("Dlib特征点", temp);
        cv::imwrite("saveXZQ_landmark.jpg", temp);
        cv::waitKey(0);

    }
    catch (exception& e)
    {
        cout << e.what() << endl;
    }
}

效果:

舒畅大美人!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QtCreator工具下载链接

QT工具下载链接&#xff1a; 离线安装的安装包下载链接&#xff1a; Index of /archive/qthttp://download.qt.io/archive/qt/ 在线安装的安装包下载链接&#xff1a; Index of /archive/online_installershttps://download.qt.io/archive/online_installers/

第八十六天学习记录:Linux基础:基础指令Ⅰ

Linux系统的目录结构 Linux的目录结构是一个树型结构 Linux没有盘符的概念&#xff0c;只有一个根目录/&#xff0c;所有文件都在根目录下面 Linux系统的路径表达形式 在Linux系统中&#xff0c;路径之间的层级关系使用&#xff1a;/来表示。&#xff08;windows系统中用\&a…

ecology9-导出流程上图片附件的方案

ecology9 导出流程上图片附件 方案一方案二√方案三 ecology9 把图片名称位置等信息存储在imagefile中&#xff0c;实际文件以zip压缩包的形式存储在服务器上。需求是提供导出历史流程上的图片附件&#xff0c;方便新系统导入 方案一 编写图片附件下载接口&#xff0c;查询到图…

Java双指针专题——1.移动0 2.复写0 3.快乐数4.盛最多水的容器5.有效三角形的个数 6.和为s的两个数字7.三数之和8.四数之和

目录 1.移动0 2.复写0 3.快乐数 4.盛最多水的容器 5.有效三角形的个数 6.和为s的两个数字 7.三数之和 8.四数之和 1.移动0 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组…

实施预测性维护的策略和实践探讨

随着工业设备复杂性和关键性的增加&#xff0c;传统的计划性维护方法已经无法满足现代工业的需求。预测性维护作为一种基于设备状态和数据分析的维护策略&#xff0c;能够准确预测设备故障&#xff0c;降低停机时间&#xff0c;提高生产效率和设备可靠性。在实施预测性维护之前…

初出茅庐的小李博客之RTC时间设置

串口上位机设置RTC时间进行校准 方式1&#xff1a;发送固定格式时间解析 代码&#xff1a; #include <stdio.h> #include <string.h> /* 当在格式字符串中使用 %*[^:] 时&#xff0c;它表示在读取输入时跳过冒号 : 之前的任何字符。 %*&#xff1a;星号 * 表示读…

DeepMind发布多任务机器人RoboCat;沧海拾珍之LLM、GPT

&#x1f989; AI新闻 &#x1f680; DeepMind发布多任务机器人控制AI模型RoboCat 摘要&#xff1a;谷歌旗下DeepMind发布了名为RoboCat的AI模型&#xff0c;该模型可以控制不同机器人手臂执行多项任务。RoboCat是第一个能够解决和适应多种任务的模型&#xff0c;并且使用真实…

过滤器-filter

1 Servlet规范中的过滤器-Filter 1.1 过滤器入门 1.1.1 过滤器概念及作用 过滤器——Filter&#xff0c;它是JavaWeb三大组件之一。另外两个是Servlet和Listener。 它是在2000年发布的Servlet2.3规范中加入的一个接口。是Servlet规范中非常实用的技术。 它可以对web应用中…

CSS3新增了哪些新特性?

一、是什么 css&#xff0c;即层叠样式表&#xff08;Cascading Style Sheets&#xff09;的简称&#xff0c;是一种标记语言&#xff0c;由浏览器解释执行用来使页面变得更美观 css3是css的最新标准&#xff0c;是向后兼容的&#xff0c;CSS1/2的特性在CSS3 里都是可以使用的…

最优化方法(基于lingo)之 求解线性规划问题(1/6)

一、实验目的&#xff1a; 1. 会建立合理的规划模型&#xff1b; 2. 学习掌握Matlab中求解线性规划的命令&#xff1b; [x,fval]linprog(f,A,b); [x,fval]linprog(f,A,b,Aeq,beq); [x,fval]linprog(f,A,b,Aeq,beq,lb;ub); 3. 要求学生能在计算机上应用各种优化软件包熟练地操作…

音视频流媒体开发工作机会占80%的市场份额

音视频流媒体开发领域的工作机会在过去几年中确实呈现出了快速增长的趋势。随着互联网的普及和网络带宽的提高&#xff0c;人们对音视频内容的需求也越来越大&#xff0c;这导致了许多公司和组织寻求音视频流媒体开发人员来满足市场需求。 音视频流媒体开发工作的主要流程可以概…

对MVVM和MVC开发模式的理解

对MVVM和MVC开发模式的理解 1、MVVM2、MVC3、MVVM与MVC的区别 1、MVVM MVVM最早由微软提出来&#xff0c;它借鉴了桌面应用程序的MVC思想&#xff0c;在前端页面中&#xff0c;把Model用纯JavaScript对象表示&#xff0c;View负责显示&#xff0c;两者做到了最大限度的分离&am…

基于 SpringBoot 2.X 框架的智能制造云办公系统,已开源

简介 基于SpringBoot 2.X框架的智能制造云办公系统&#xff0c;立志打造ERP生产功能的软件&#xff0c;专注进销存财务功能生产管理&#xff0c;适合各行业。主要完成从下单->进货->生产->出库的过程&#xff0c;涉及到领料&#xff0c;出入库&#xff0c;工序&#…

Kotlin Multiplatform项目探索之KMChat

Kotlin Multiplatform项目探索之KMChat 这是当前在 Kotlin Multiplatform 官方文档中提议的用例结构。Kotlin Multiplatform 中包含的许多子组件已经发布了稳定版本&#xff0c;即使目前不稳定的组件也在迅速更新。 本文中的演示项目包括 Compose Multiplatform - Web (Experi…

【微服务架构设计和实现】4.9 微服务测试和部署最佳实践

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【基于容器的部署、管理和扩展】 第四章&#xff1a;【4.1 微服务架构概述和设计原则】 第四章&#xff1a;【4.2 服务边界的定义和划分…

STM32单片机(六)TIM定时器 -> 第二节:TIM定时中断练习2(定时器外部时钟)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

如何看待社交媒体的时间管理和沉迷问题?

在当今数字化时代&#xff0c;社交媒体已经成为了人们生活中不可或缺的一部分。然而&#xff0c;社交媒体的普及也带来了一个问题&#xff1a;时间管理和沉迷。本文将从多个角度对社交媒体的时间管理和沉迷问题进行分析&#xff0c;并探讨如何合理利用社交媒体并避免沉迷。 第…

【计算机视觉】DINO

paper&#xff1a;Emerging Properties in Self-Supervised Vision Transformers 源码&#xff1a;https://github.com/facebookresearch/dino 20230627周二目前只把第一部分看完了。 论文导读&#xff1a;DINO -自监督视觉Transformers - deephub的文章 - 知乎、 DINO原理…

C生万物 | 细说动态内存管理【附经典笔试题】

文章目录 一、为什么存在动态内存分配二、动态内存函数的介绍1、malloc和free2、calloc3、reallocrealloc扩容机制&#xff1a;【本地扩容】和【异地扩容】实际应用&#xff1a;数据结构之【顺序表】与【顺序栈】 三、常见的动态内存错误1、对NULL指针的解引用操作2、对动态开辟…

Redisson源码-多线程之首个获取锁的线程加解锁流程

Redisson源码-多线程之首个获取锁的线程加解锁流程 简介 当有多个线程同时去获取同一把锁时&#xff0c;第一个获取到锁的线程会进行加解锁&#xff0c;其他线程需订阅消息并等待锁释放。 以下源码分析基于redisson-3.17.6版本&#xff0c;不同版本源码会有些许不同需注意。 …