• 从胡红岩到王天荣,还有多少人在无辜背案底 2019-09-17
  • 英国政治家威廉·皮特说得好:百姓的茅草房,风可以进,雨可以进,国王不可以随便进。 2019-09-17
  • 事件 —频道 春城壹网 七彩云南 一网天下 2019-08-30
  • 《辉煌中国》第一集《圆梦工程》 2019-08-30
  • 建党精神,从这八个字学起——访中国史学会原会长金冲及 2019-08-26
  • "生死"淘汰赛启动 中国私募股权行业加速洗牌 2019-08-15
  • 国际锐评:美方反复无常,中方洞若观火,同等反制! 2019-08-03
  • 中美贸易战,让更多的中国人醒悟过来:美国是靠不住的。 2019-08-03
  • 中国电视剧诞生60周年盛典 老中青三代主创齐聚一堂 2019-07-25
  • 探寻南极之境 送给世界尽头的一封情书 2019-07-25
  • 抓住了!云南文山脱逃嫌疑人七小时后在城内被抓获 2019-07-22
  • “埃夫特·栋梁杯”全国工业机器人技术应用技能大赛落幕 2019-07-22
  • 应战美国贸易战中国跟500亿 同等力度、同日开征关税 2019-07-12
  • 专家谈当前市场预期 信心持续攀升预期比较乐观 2019-07-02
  • SNH48年度总决选速报结果公布 李艺彤登顶 2019-07-02
  • 查看: 39966|回复: 47
    打印 上一主题 下一主题

    [进阶教程] Mathematica+Arduino 摄像头检测人脸并跟随

      [复制链接]
    本帖最后由 mmaer 于 2017-8-14 18:44 编辑

    通过USB摄像头获取图像,如果检测到人脸将计算出中心坐标,把坐标通过串口发送给Arduino,算出人脸坐标偏离画面中心点的距离,然后根据这个偏离值驱动舵机带动摄像头修正指向,从而可以跟随人脸移动。

    软件
    Mathematica 10/11
    Arduino IDE

    硬件
    Arduino开发板
    USB摄像头
    9g舵机
    舵机云台

    连接线若干

    连接
    把摄像头固定在舵机云台上,在Arduino开发板上插上IO传感器扩展板,舵机接在传感器扩展板的第9个数字引脚上。
    注意:
    如果选用的是大功率的云台和舵机,需要为舵机独立供电。
    本文使用的云台为一个自由度(水平移动),知道了原理后扩展为两个自由度也很简单(水平+垂直)。


    演示



    Mathematica 代码
    [AppleScript] 纯文本查看 复制代码
    $ImagingDevice = $ImagingDevices[[2]];
    
    dev = DeviceOpen["Serial", "COM3"]
    
    Dynamic[
     i = CurrentImage[];
     boxes = FindFaces[i];
     If[boxes =!= {},
      {X, Y} = Round[Mean @@ boxes];
      [email protected]
       {
        HighlightImage[i, Circle[{X, Y}, 50], ImageSize -> {320, 240}], 
        DeviceWrite[dev, ToString[X]]
        },
      i]
     ]


    Arduino 代码
    [C] 纯文本查看 复制代码
    #include <Servo.h>
    
    #define  servomaxx   180   // max degree servo horizontal (x) can turn
    #define  screenmaxx   320   // max screen horizontal (x)resolution
    #define  screenmaxy   240    // max screen vertical (y) resolution
    #define  servocenterx   90  // center po#define  of x servo
    #define  servopinx   9   // digital pin for servo x
    #define  baudrate 9600  // com port speed. Must match your setting
    #define distancex 2  // x servo rotation steps
    
    int valx = 0;       // store x data from serial port
    int posx = 0;
    int incx = 10;  // significant increments of horizontal (x) camera movement
    
    Servo servox;
    
    void setup() {
      Serial.begin(baudrate);        // connect to the serial port
      Serial.setTimeout(20);
      Serial.println("Starting Cam-servo Face tracker");
    
      pinMode(servopinx, OUTPUT);   // declare the LED's pin as output
    
      servox.attach(servopinx);
    
      // center servos
      servox.write(servocenterx);
      delay(200);
    }
    
    
    void loop () {
      while (Serial.available() <= 0); // wait for incoming serial data
      if (Serial.available() >= 1)  
      {
        // get X axis 2-byte integer from serial
        valx = Serial.parseInt();
    
        // read last servos positions
        posx = servox.read();
    
        //Find out if the X component of the face is to the left of the middle of the screen.
        if (valx < (screenmaxx / 2 - incx)) {
          if ( posx >= incx ) posx += distancex; //Update the pan position variable to move the servo to the left.
        }
        //Find out if the X component of the face is to the right of the middle of the screen.
        else if (valx > screenmaxx / 2 + incx) {
          if (posx <= servomaxx - incx) posx -= distancex; //Update the pan position variable to move the servo to the right.
        }
    
        // Servos will rotate accordingly
        servox.write(posx);
    
      }
    }



    本帖被以下淘专辑推荐:

    • · 毕设|主题: 1, 订阅: 0
    沙发

    hnyzcj  超级版主

    发表于 2016-12-6 19:09:13

    这个有些牛逼
    板凳

    dsweiliang  版主

    发表于 2016-12-8 16:38:15

    学习学习
    地板

    飞猪的小号  中级技师

    发表于 2016-12-9 20:22:38

    看起来好酷啊,学习学习
    5#

    HMark  初级技师

    发表于 2016-12-11 08:26:13

    厉害厉害
    6#

    gray6666  高级技匠

    发表于 2016-12-11 14:21:26

    好东西,学习了
    7#

    iooops  版主

    发表于 2016-12-11 21:42:16

    为什么代码这么短。。
    8#

    Memorainer  见习技师

    发表于 2016-12-11 22:04:10

    我想知道,如果出现多张脸会发生什么
    9#

    mmaer  初级技师
     楼主|

    发表于 2016-12-12 10:52:23

    iooops 发表于 2016-12-11 21:42
    为什么代码这么短。。

    案例本来就简单,还有Mathematica库函数丰富 语法比较简洁
    10#

    mmaer  初级技师
     楼主|

    发表于 2016-12-12 10:53:19

    Memorainer 发表于 2016-12-11 22:04
    我想知道,如果出现多张脸会发生什么

    这种情况还没有考虑,现在只检测一张脸
    11#

    吹口琴的钢铁侠  版主

    发表于 2016-12-13 10:19:58

    是在pc上跑mathematic?Arduino只是控制舵机?
    什么型号的Arduino能跑起人脸识别呢
    12#

    mmaer  初级技师
     楼主|

    发表于 2016-12-13 12:03:35

    吹口琴的钢铁侠 发表于 2016-12-13 10:19
    是在pc上跑mathematic?Arduino只是控制舵机?
    什么型号的Arduino能跑起人脸识别呢 ...

    是在PC上跑的,LattePanda上也可以跑的,树莓派上自带的有Mathematica但功能不完整。
    pcDuino上可以跑人脸检测的
    13#

    John管宁川  

    发表于 2016-12-20 15:09:24

    提示: 作者被禁止或删除 内容自动屏蔽
    14#

    DFrobothty  中级技师

    发表于 2016-12-29 09:07:05

    厉害了world哥
    15#

    Xpimach  见习技师

    发表于 2017-1-5 14:28:30

    很不错欸
    16#

    Xpimach  见习技师

    发表于 2017-1-5 14:28:39

    大神

    点评

    过奖了  发表于 2017-1-5 16:42
    17#

    Xpimach  见习技师

    发表于 2017-1-5 14:28:50

    顶一个。
    18#

    砖头墙  初级技师

    发表于 2017-1-6 21:17:57

    叼                       牛                       膜拜大神
    19#

    vvvvv  学徒

    发表于 2017-1-20 18:10:57

    收藏 学习了
    20#

    hnyzcj  超级版主

    发表于 2017-1-21 09:04:04

    楼主用你的真脸试试看看行不行呀
    21#

    lauren  高级技师

    发表于 2017-1-25 18:39:02

    哟不错,简单好玩!有没有耍过Wolfram的Systemmodeler!?

    点评

    没玩过这个呢,以后有机会试试  发表于 2017-2-6 11:55
    123下一页
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    为本项目制作心愿单
    购买心愿单
    心愿单 编辑
    wifi气象站

    硬件清单

    btnicon
    我也要做!
    点击进入购买页面
    关于楼主
    上海智位机器人股份有限公司 沪ICP备09038501号-4

    © 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

    极速赛车预测
  • 从胡红岩到王天荣,还有多少人在无辜背案底 2019-09-17
  • 英国政治家威廉·皮特说得好:百姓的茅草房,风可以进,雨可以进,国王不可以随便进。 2019-09-17
  • 事件 —频道 春城壹网 七彩云南 一网天下 2019-08-30
  • 《辉煌中国》第一集《圆梦工程》 2019-08-30
  • 建党精神,从这八个字学起——访中国史学会原会长金冲及 2019-08-26
  • "生死"淘汰赛启动 中国私募股权行业加速洗牌 2019-08-15
  • 国际锐评:美方反复无常,中方洞若观火,同等反制! 2019-08-03
  • 中美贸易战,让更多的中国人醒悟过来:美国是靠不住的。 2019-08-03
  • 中国电视剧诞生60周年盛典 老中青三代主创齐聚一堂 2019-07-25
  • 探寻南极之境 送给世界尽头的一封情书 2019-07-25
  • 抓住了!云南文山脱逃嫌疑人七小时后在城内被抓获 2019-07-22
  • “埃夫特·栋梁杯”全国工业机器人技术应用技能大赛落幕 2019-07-22
  • 应战美国贸易战中国跟500亿 同等力度、同日开征关税 2019-07-12
  • 专家谈当前市场预期 信心持续攀升预期比较乐观 2019-07-02
  • SNH48年度总决选速报结果公布 李艺彤登顶 2019-07-02
  • 游戏机上的经典游戏 海南飞鱼彩票走势图 6场半全场竞彩足球0 江苏快3手机软件 排球英文术语 重庆时时彩停止开奖 广东36选7好彩3 2009年网上彩票销售额 蜜桃成熟时3d 31809铁算盘心水论坛 福建22选5开奖 免费六合图库 彩票双色球个十百位分布图 福建快3开奖号码昨天 四川时时彩官网下载