ofxFacetracker addon & FaceSubstitution ex.test / memo

ofxFacetracker addon & FaceSubstitution test

ofxFacetracker-master、 ofcCv-masterをダウンロード
examples & addons にそれぞれ、ofCv , ofxFacetracker ファイルを作成
ofxOpenCv(既にaddonsに梱包されている。)

■ofxFacetracker example-advanced test
example-advancedのbin内にdateファイルを作成のち、
addons / ofxFaceTracker / libs / 内のmodelをコピー

example-advancedのプロジェクトを開いて、下記内容をaddonファイルに追加
———————-
ofxFacetracker
ofxCv
ofxOpenCv
———————-
ビルド。
※うまくいかない時は、⌘+shift+k(クリーン)後ビルド
※ また、勝手にaddon内のファイルが欠如している場合がある。

—————————————————————————————-

■FaceSubstitution test
FaceSubstitution-master をダウンロード
そのまま、プロジェクト実行しいても、OF 0.8.4では環境動作に不具合が出る為、
コンパイルできない。

projectGenerator_osx.appで新規で作成する。
ファイル名 FaceSubstitution
場所 myApp
addon ofxCv ofxOpenCv, ofxFacetracker

プロジェクトを開く、
main.cpp ヘッダー等を削除、その場所に
FaceSubstitution-master / FaceSubstitution / src /
main.cpp, testApp.cpp, testApp.hをコピーして入れ替える。
FaceSubstitutionのbin内にdate,faceフォルダを作成、
dateにはmodel、faceには適当な顔写真を入れる(この画像をマッピングする)

後、実行

 

 

追記/【memo】—–int型でのデータ取得、途中の//floatはヘッダーに追加を忘れずに
●testApp.cpp

#include “testApp.h”

//————————————————————–

void testApp::setup(){

    ofSetFrameRate(60);

    ofSetVerticalSync(true);

    

    cam.initGrabber(640, 480);

    tracker.setup();

}

//————————————————————–

void testApp::update(){

    cam.update();

    if(cam.isFrameNew()) {

        tracker.update(toCv(cam));

        

        

        if(tracker.getFound()) {

            //Face_OUTLINE

            face_outline = tracker.getImageFeature(ofxFaceTracker::FACE_OUTLINE);

            //LEFT_EYEBROW

            left_eyebrow_outline = tracker.getImageFeature(ofxFaceTracker::LEFT_EYEBROW);

            //RIGHT_EYEBROW

            right_eyebrow_outline = tracker.getImageFeature(ofxFaceTracker::RIGHT_EYEBROW);

            //LEFT_EYE

            left_eye_outline = tracker.getImageFeature(ofxFaceTracker::LEFT_EYE);

            //RIGHT_EYE

            right_eye_outline = tracker.getImageFeature(ofxFaceTracker::RIGHT_EYE);

            //LEFT_JAW

            left_jaw_outline = tracker.getImageFeature(ofxFaceTracker::LEFT_JAW);

            //RIGHT_JAW

            right_jaw_outline = tracker.getImageFeature(ofxFaceTracker::RIGHT_JAW);

            //OUTER_MOUTH

            outer_mouth_outline = tracker.getImageFeature(ofxFaceTracker::OUTER_MOUTH);

            //INNTER_MOUTH

            inner_mouth_outline = tracker.getImageFeature(ofxFaceTracker::INNER_MOUTH);

            //NOSE_BRIDGE

            nose_bridge_outline = tracker.getImageFeature(ofxFaceTracker::NOSE_BRIDGE);

            //NOSE_BASE

            nose_base_outline = tracker.getImageFeature(ofxFaceTracker::NOSE_BASE);

        }

    }

}

//            left_eye_outline_num = tracker.getGesture(ofxFaceTracker::LEFT_EYE_OPENNESS);

//            right_eye_outline_num = tracker.getGesture(ofxFaceTracker::LEFT_EYE_OPENNESS);

//————————————————————–

void testApp::draw(){

    ofSetColor(255,255,255);

    cam.draw(0,0);

    ofSetColor(0,255,0);

    ofNoFill();

    

    if( tracker.getFound()){

        ofSetColor(255,255,255);

        ofRect(face_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)face_outline.getBoundingBox().x)+“,”+ofToString((int)face_outline.getBoundingBox().y)+“)”,

                           face_outline.getBoundingBox().x,

                           face_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(left_eyebrow_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)left_eyebrow_outline.getBoundingBox().x)+“,”+ofToString((int)left_eyebrow_outline.getBoundingBox().y)+“)”,

                           left_eyebrow_outline.getBoundingBox().x,

                           left_eyebrow_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(right_eyebrow_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)right_eyebrow_outline.getBoundingBox().x)+“,”+ofToString((int)right_eyebrow_outline.getBoundingBox().y)+“)”,

                           right_eyebrow_outline.getBoundingBox().x,

                           right_eyebrow_outline.getBoundingBox().y);

        

        

        ofSetColor(255,255,255);

        ofRect(left_eye_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)left_eye_outline.getBoundingBox().x)+“,”+ofToString((int)left_eye_outline.getBoundingBox().y)+“)”,

                           left_eye_outline.getBoundingBox().x,

                           left_eye_outline.getBoundingBox().y);

        

        

        ofSetColor(255,255,255);

        ofRect(right_eye_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)right_eye_outline.getBoundingBox().x)+“,”+ofToString((int)right_eye_outline.getBoundingBox().y)+“)”,

                           right_eye_outline.getBoundingBox().x,

                           right_eye_outline.getBoundingBox().y);

        

        

        

        ofSetColor(255,255,255);

        ofRect(left_jaw_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)left_jaw_outline.getBoundingBox().x)+“,”+ofToString((int)left_jaw_outline.getBoundingBox().y)+“)”,

                           left_jaw_outline.getBoundingBox().x,

                           left_jaw_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(right_jaw_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)right_jaw_outline.getBoundingBox().x)+“,”+ofToString((int)right_jaw_outline.getBoundingBox().y)+“)”,

                           right_jaw_outline.getBoundingBox().x,

                           right_jaw_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(outer_mouth_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)outer_mouth_outline.getBoundingBox().x)+“,”+ofToString((int)outer_mouth_outline.getBoundingBox().y)+“)”,

                           outer_mouth_outline.getBoundingBox().x,

                           outer_mouth_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(inner_mouth_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)inner_mouth_outline.getBoundingBox().x)+“,”+ofToString((int)inner_mouth_outline.getBoundingBox().y)+“)”,

                           inner_mouth_outline.getBoundingBox().x,

                           inner_mouth_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(nose_bridge_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)nose_bridge_outline.getBoundingBox().x)+“,”+ofToString((int)nose_bridge_outline.getBoundingBox().y)+“)”,

                           nose_bridge_outline.getBoundingBox().x,

                           nose_bridge_outline.getBoundingBox().y);

        

        ofSetColor(255,255,255);

        ofRect(nose_base_outline.getBoundingBox());

        ofDrawBitmapString(“(“+ofToString((int)nose_base_outline.getBoundingBox().x)+“,”+ofToString((int)nose_base_outline.getBoundingBox().y)+“)”,

                           nose_base_outline.getBoundingBox().x,

                           nose_base_outline.getBoundingBox().y);

    }
}

●testApp.cpp

#pragma once

#include “ofMain.h”

#include “ofxOpenCv.h”

#include “ofxFaceTracker.h”

#include “ofxCv.h”

using namespace ofxCv;

class testApp : public ofBaseApp{

    

public:

    void setup();

    void update();

    void draw();

    

    ofVideoGrabber cam;

    ofxFaceTracker tracker;

    

    ofPolyline face_outline;

    ofPolyline left_eyebrow_outline;

    ofPolyline right_eyebrow_outline;

    ofPolyline left_eye_outline;

    ofPolyline right_eye_outline;

    ofPolyline left_jaw_outline;

    ofPolyline right_jaw_outline;

    ofPolyline outer_mouth_outline;

    ofPolyline inner_mouth_outline;

    ofPolyline nose_bridge_outline;

    ofPolyline nose_base_outline;

  

//    float left_eye_outline_num;

//    float right_eye_outline_num;

    

};

コメントを残す