質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2267閲覧

ofxFaceTrackerを用いて「カメラに写っている自分の顔に、他人の顔をマッピングする」時の環境設定について

退会済みユーザー

退会済みユーザー

総合スコア0

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/07/22 12:41

以下の参考サイトを見ながら、環境設定を行い、「FaceOSC.app」を立ち上げて、3Dメッシュが顔動画に描画されるところまではたどり着きました。

参考webサイト1
参考webサイト2

困っているのは、カメラに写っている自分の顔に、他人の顔をマッピングして顔を交換する際に、参考webサイト2より以下のコードを書く必要があるのですが、その開発環境がわからないことです。miやSublime Textなどで書いて、ファイルをどこに移動させれれば良いのでしょうか。

C++

1#include "testApp.h" 2using namespace ofxCv; 3void testApp::setup() { 4 5//画面基本設定 6ofSetVerticalSync(true); 7ofEnableAlphaBlending(); 8 9//カメラを初期化 10cam.initGrabber(640, 480); 11 12//合成するイメージのメモリ領域を確保して、読込み 13faceImage.allocate(640, 480, OF_IMAGE_COLOR); 14faceImage.loadImage("jiu.jpg"); 15 16//カメラ映像のフェイストラッカーのセットアップ 17tracker.setup(); 18 19//合成する顔画像のフェイストラッカーのセットアップ 20imgTracker.setup(); 21} 22 23void testApp::update() { 24//カメラ更新 25cam.update(); 26if(cam.isFrameNew()) { 27 28//フェイストラッカーの更新 29imgTracker.update(toCv(faceImage)); 30tracker.update(toCv(cam)); 31} 32} 33 34void testApp::draw() { 35//カメラ映像を描画 36ofSetColor(255); 37cam.draw(0, 0); 38 39//フレームレート表示 40ofDrawBitmapString(ofToString((int) ofGetFrameRate()), 10, 20); 41 42//もしカメラの映像に顔が検出されたら以下の処理をする 43if(tracker.getFound()) { 44 45//カメラ映像からメッシュを作成 46ofMesh objectMesh = tracker.getObjectMesh(); 47 48//合成する顔の画像からメッシュを作成 49ofMesh imgMesh = imgTracker.getObjectMesh(); 50 51//静止画のメッシュの頂点情報を、カメラから生成したメッシュのものに変換 52//つまり現在の顔の表情を、静止画のメッシュに適用 53for (int i = 0; i < objectMesh.getNumVertices(); i++) { 54imgMesh.setVertex(i, objectMesh.getVertex(i)); 55} 56 57//画面の3Dのパースをなしに 58ofSetupScreenOrtho(640, 480, OF_ORIENTATION_DEFAULT, 59true, -1000, 1000); 60 61//カメラで検出された顔の、位置、大きさ、傾きを取得 62ofVec2f positon = tracker.getPosition(); 63float scale = tracker.getScale(); 64ofVec3f orientation = tracker.getOrientation(); 65 66//静止画のメッシュをカメラの位置、大きさ、傾きにあわせる 67ofPushMatrix(); 68ofTranslate(positon.x, positon.y); 69ofScale(scale, scale, scale); 70ofRotateX(orientation.x * 45.0f); 71ofRotateY(orientation.y * 45.0f); 72ofRotateZ(orientation.z * 45.0f); 73 74//静止画から生成メッシュを配置して、合成する画像をマッピング 75ofSetColor(255, 255, 255, 127); 76faceImage.getTextureReference().bind(); 77imgMesh.draw(); 78faceImage.getTextureReference().unbind(); 79ofPopMatrix(); 80} 81} 82 83void testApp::keyPressed(int key) { 84//トラッカーのリセット 85if(key == 'r') { 86tracker.reset(); 87imgTracker.reset(); 88} 89}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

yoppaさんは毎回、自分の講義のサンプルプログラムを公開しているので、それを見られると早いかと思われます。
イメージ説明
これの中に入ってるma2_week8/02_FaceExcangeのフォルダの中をみれば自分の作ったFaceOSCとほぼ同じだと思われると思います。

もしProjectGeneratorで作られたのであれば、srcのフォルダの中にofApp.cppofApp.hがあると思います。
この二つがyoppaさんのものではtestApp.cpptestApp.hのことです。
結論をいうと上記のファイルはofApp.cppに書いてください

yoppaさんのではtestAppになっているところはすべてofAppにする必要があります…

yoppaさんのスライドでは、ヘッダーファイル(ofApp.htestApp.h)の説明がないですが、ヘッダーファイルにも記述が必要です。サンプルプログラムをダウンロードして確認してみてください。

また他にわからないことや説明の至らないところがありましたら、教えていただければありがたいです。

投稿2017/07/29 19:21

nami634

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/29 22:47

ご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問