0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用openFrameworks人脸跟踪器模式控制电机

454398 来源:工程师吴畏 2019-08-02 11:42 次阅读

在本指南中,我们将记录四个输出的样本:

对于出现在相机前面的面部。

对于出现在相机右侧的脸部。

对于距相机一定距离的脸部。

对于出现在相机前面的物体。

安装openFrameworks人脸跟踪器模式

openFrameworks的安装文件,以及面部追踪功能,可在Wekinator网站上找到。

怎样用openFrameworks人脸跟踪器模式控制电机

图像显示Wekinator网站上面部跟踪下载文件的位置ite

下载面部跟踪文件后,解压缩并运行程序。它应激活计算机网络摄像头以跟踪用户的面部。

使用计算机网络摄像头识别面部的面部跟踪器程序的示例图像。

处理指令

在处理方面,本指南将要求使用草图,该草图将从Wekinator软件接收输出数据并将其转发给Arduino

import vsync.*; // Importing the library that will help us in sending and receiving the values from the Arduino

import processing.serial.*; // Importing the serial library

// Below libraries will connect and send, receive the values from wekinator

import oscP5.*;

import netP5.*;

// Creating the instances

OscP5 oscP5;

NetAddress dest;

ValueSender sender;

// These variables will be syncronized with the Arduino and they should be same on the Arduino side.

public int output;

void setup()

{

// Starting the serial communication, the baudrate and the com port should be same as on the Arduino side.

Serial serial = new Serial(this, “COM10”, 115200);

sender = new ValueSender(this, serial);

// Synchronizing the variables as on the Arduino side. The order should be same.

sender.observe(“output”);

// Starting the communication with wekinator. listen on port 12000, return messages on port 6448

oscP5 = new OscP5(this, 12000);

dest = new NetAddress(“127.0.0.1”, 6448);

}

// Recieve OSC messages from Wekinator

void oscEvent(OscMessage theOscMessage) {

if (theOscMessage.checkAddrPattern(“/wek/outputs”) == true) {

// Receiving the output from wekinator

float value = theOscMessage.get(0).floatValue();

// Converting the output to int type

output = int(value);

}

}

void draw()

{

// Nothing to be drawn for this example

}

连接直流电机到Arduino

处理草图将从Wekinator发送输出数据到Arduino,它将相应地控制电机。

为了将电机连接到Arduino,请按照下图中的位置。

查看我们的文章详细说明如何通过openFramework发送和接收数据平台使用Arduinoto更好地了解openFrameworks如何与Arduino通信

连接到Arduino UNO的电机示意图。

Arduino代码

#include //Including the library that will help us in receiving and sending the values from processing

ValueReceiver《1》 receiver; /*Creating the receiver that will receive only one value.

Put the number of values to synchronize in the brackets */

/* The below variable will be synchronized in the processing

and it should be same on both sides. */

int output;

//Motor Pins

int EN_A = 11;

int IN1 = 9;

int IN2 = 8;

int IN3 = 7;

int IN4 = 6;

int EN_B = 10;

void setup()

{

/* Starting the serial communication because we are communicating with the

Processing through serial. The baudrate should be same as on the processing side. */

Serial.begin(115200);

//Initializing the motor pins as output

pinMode(EN_A, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

pinMode(EN_B, OUTPUT);

digitalWrite(EN_A, HIGH);

digitalWrite(EN_B, HIGH);

// Synchronizing the variable with the processing. The variable must be int type.

receiver.observe(output);

}

void loop()

{

// Receiving the output from the processing.

receiver.sync();

// Matching the received output to light up led‘s

if (output == 1)

{

//Forward

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

}

else if (output == 2)

{

//Right

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

else if (output == 3)

{

//Left

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

}

else if (output == 4)

{

//Stop

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

}

在Wekinator中使用人脸检测

第一步是启动Wekinator平台并更改设置以反映下图中的设置。

将输入值设置为3.

将输出值设置为1.

将输出类型指定为“all continuous”

将所有其他设置保留为默认格式。

为了启用Wekinator和openFrameworks平台之间的通信,您需要下载ChucK编程语言,你可以在查克官方网站上这样做。

了解更多信息在安装和使用Wekinator程序时,请查看我们的如何开始使用Wekinator的指南。

Wekinator将从openFrameworks应用程序接收3个输入,然后向ChucK程序发送5个不同的输出,这会提示它产生不同的声音。

Wekinator软件程序中的“创建新项目”窗口。

单击“下一步”,将显示“新建项目”窗口,如下所示。

Wekinator软件程序中的“New Project”窗口。

将脸靠近相机记录一些测试。将分类器输出值指定为“1”。您还需要记录此移动的简短示例。

显示面部追踪器功能如何识别靠近相机的面部的示例图像。

接下来,将您的脸移到屏幕右侧,将分类输出值更改为“2”。再一次,记录运动。

显示脸部追踪器功能如何识别相机右侧脸部的示例图像。

然后将您的脸部从相机中进一步向后移动并将分类器输出更改为“3”。

人脸跟踪器功能如何识别远离相机的脸部的示例图像。

最后一步是完全退出相机视图。将分类器输出分配给’4。‘

脸部追踪器功能的示例图像未在相机视图中识别脸部。

现在,当您点击“列车”然后“运行”按钮时,电机应会在相机上的位置移动。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机
    +关注

    关注

    142

    文章

    8898

    浏览量

    144967
  • 面部追踪
    +关注

    关注

    0

    文章

    5

    浏览量

    10255
收藏 人收藏

    评论

    相关推荐

    TRKRLDOEVM-119通跟踪器LDO评估模块

    电子发烧友网站提供《TRKRLDOEVM-119通跟踪器LDO评估模块.pdf》资料免费下载
    发表于 11-09 14:47 0次下载
    TRKRLDOEVM-119通<b class='flag-5'>用</b><b class='flag-5'>跟踪器</b>LDO评估模块

    使用TMS320C40 DSP实现单脉冲雷达的数字跟踪器

    电子发烧友网站提供《使用TMS320C40 DSP实现单脉冲雷达的数字跟踪器.pdf》资料免费下载
    发表于 10-28 10:04 0次下载
    使用TMS320C40 DSP实现单脉冲雷达的数字<b class='flag-5'>跟踪器</b>

    高抗噪性 电压跟踪器

    电压跟踪
    jf_30741036
    发布于 :2024年09月29日 19:26:44

    逻辑和翻译例优化资产跟踪器

    电子发烧友网站提供《逻辑和翻译例优化资产跟踪器.pdf》资料免费下载
    发表于 09-21 11:24 0次下载
    <b class='flag-5'>用</b>逻辑和翻译<b class='flag-5'>用</b>例优化资产<b class='flag-5'>跟踪器</b>

    创想智控激光焊缝跟踪器协同专机在风机高精度自动焊接的应用

    和自动化设备盲焊,难以满足现代工业对高精度、‌高效率的需求。‌为此,‌创想智控推出了激光焊缝跟踪器协同专机的高精度自动焊接解决方案。   激光焊缝跟踪器原理   激光焊缝跟踪器是一种先进的传感技术,利用激光扫
    的头像 发表于 09-06 18:16 222次阅读
    创想智控激光焊缝<b class='flag-5'>跟踪器</b>协同专机在风机高精度自动焊接的应用

    光学跟踪器接口连接方法有哪些

    光学跟踪器是一种用于测量和跟踪物体位置和运动的设备,广泛应用于航空航天、军事、机器人、虚拟现实等领域。光学跟踪器接口连接方法是指将光学跟踪器与计算机或其他设备进行连接和通信的方法。 有
    的头像 发表于 08-29 18:26 552次阅读

    光学跟踪器信号源手机怎么设置

    光学跟踪器是一种用于测量和跟踪物体位置和运动的设备。它通常由一个摄像头、一个光源和一个传感组成。在手机中,光学跟踪器可以通过应用程序实现,例如AR(增强现实)应用。 以下是一些关于光
    的头像 发表于 08-29 18:03 535次阅读

    光学跟踪器使用的技术有哪几种

    光学跟踪器是一种用于测量和跟踪目标位置的高精度设备,广泛应用于军事、航空航天、工业自动化、科学实验等领域。它们通常利用光学原理来确定目标的位置、速度和加速度。光学跟踪器的技术种类繁多,每种技术都有其
    的头像 发表于 08-29 17:37 736次阅读

    创想智控激光焊缝跟踪器在医疗搅拌罐反应釜自动焊接的应用

    焊接路径,提高焊接精度,减少人工干预,成了自动焊接领域的利器。今天跟随创想智控一起了解激光焊缝跟踪器在医疗搅拌罐反应釜自动焊接的应用。    激光焊缝跟踪器原理   激光焊缝跟踪器通过激光传感
    的头像 发表于 08-24 13:57 179次阅读
    创想智控激光焊缝<b class='flag-5'>跟踪器</b>在医疗搅拌罐反应釜自动焊接的应用

    创想智控激光焊缝跟踪器在机械法兰盘自动扫描焊接的应用

    应运而生,成为解决这些问题的有效工具。今天一起了解创想智控激光焊缝跟踪器在机械法兰盘自动扫描焊接的应用。    激光焊缝跟踪器原理   激光焊缝跟踪器利用高精度激光扫描技术,实时检测焊缝位置并调整焊接路径。其原理
    的头像 发表于 08-17 15:58 1716次阅读
    创想智控激光焊缝<b class='flag-5'>跟踪器</b>在机械法兰盘自动扫描焊接的应用

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)时, GPIO_PinAFConfig和GPIO_AF_TIM1都没定义,stm32f100
    发表于 05-07 06:06

    Genius Tracker™ 安装速度远超竞争对手的单轴跟踪器

    来自第三方的时间研究表明 GameChange Solar 的 Genius Tracker™ 安装速度远超竞争对手的单轴跟踪器 现场研究表明,照比市场中其他三款有竞争力的 1P 跟踪器
    的头像 发表于 04-07 16:49 440次阅读

    Wi-SUN 可最大限度地提高太阳能跟踪器的性能

    目前,随着光伏系统技术的进步,智能跟踪得以实现,可最大限度地提高太阳光能的输出。不同于固定式电池板,太阳能光伏 (PV) 跟踪器能够全天将太阳能电池板朝向太阳,并在恶劣天气下保护电池板免受冰雹或狂风
    的头像 发表于 01-07 08:38 629次阅读
    Wi-SUN 可最大限度地提高太阳能<b class='flag-5'>跟踪器</b>的性能

    什么是电压跟踪器

    什么是电压跟踪器
    的头像 发表于 12-07 16:10 885次阅读
    什么是电压<b class='flag-5'>跟踪器</b>?

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41