2016-09-13 7 views
-1

に画像を設定する方法を、私は誰かが私には処理を使用して前面に画像を設定するために助けることができるかどうかを知りたいです。 私は、連続したループでビデオが表示され、このビデオの上には透明であるビデオを見るためのアルファマスクがあります。 次に、ウェブカメラからのビデオがIR近接センサでトリガされます。このビデオは円筒で歪められていますので、マスクに合わせてビデオを拡大しますので、ビデオをマスクの下に置いてください。処理:フォアグラウンド

インターネットで検索しますが、それについては何も検索しません。 私は上の行をビデオの下に移動しようとしましたが、何も動作しません。私はワーピングがなかったときの前のバージョンでそれをやっていました。私は単純に2行移動して動作しています。しかし、今、私はあなたの助けのために...それは私が狂わせる、この反りは、何も動作そんなに

感謝を持っています。 ここに私のコード:

///////////////////////////////////////// ///////////// EDIT ///////////////////////////////////////////////// //////////////////////

あなたの助けのために再びおかげで、リンクについては申し訳ありませんが、私は知りませんでした。 ウェブカメラ/写真のムービー/ビデオをテクスチャとして使用する方法を知っていますが、それは私の問題ではありません。 私が遭遇する問題は、その上にテクスチャを持つ形の上にマスクを置くことです、そして、私はそれを行う方法がわかりません、私は多くの多くのものを試してみます。私は3日以来この問題を扱っています... マスクについて、私が問題を分離したコード(MCVE)は、Photoshopで作成しました:真ん中に黒い背景と透明の形をしたシンプルな形透過性を備えたPNG形式のWeb用にエクスポートされました。

int tubeRes = 32; 
float[] tubeX = new float[tubeRes]; 
float[] tubeY = new float[tubeRes]; 
PImage img; 
PImage masque; 

void setup() { 
    size(1280, 1024, P3D); 
    img = loadImage("berlin-1.jpg"); 
    masque = loadImage("mask.png"); 
    float angle = 210.0/tubeRes; 
    for (int i = 0; i < tubeRes; i++) { 
    tubeX[i] = cos(radians(i * angle)); 
    tubeY[i] = sin(radians(i * angle)); 
    } 
    noStroke(); 
} 

void draw() { 
    translate(width/2, height/2); 
    beginShape(QUAD_STRIP); 
    texture(img); 
    for (int i = 0; i < tubeRes; i++) { 
    float x = tubeX[i] * 120; 
    float z = tubeY[i] * 100; 
    float u = img.width/tubeRes * i; 
    vertex(x, -270, z, u, 0); 
    vertex(x, 230, z, u, img.height); 
    } 
    endShape(); 
    beginShape(QUADS); 
    texture(img); 
    vertex(0, -100, 0, 0, 0); 
    vertex(100, -100, 0, 100, 0); 
    vertex(100, 100, 0, 100, 100); 
    vertex(0, 100, 0, 0, 100); 
    endShape(); 
    translate(-640, -515); 
} 

enter image description here

+0

私はあなたが求めているのかわからないんだけど。あなたが[mcve]を投稿するとあなたはもっと良い運があります。余分なコードなしで問題を示す小さなサンプルプログラムを作成します。可能な限りハードコード。おそらく、シリアルのものは必要ないでしょう。おそらくopencvのものは必要ないでしょう。問題を表示するには、ハードコードされた値(カメラの代わりにムービーファイル)を使用してください。 –

+0

こんにちはケビン、あなたの返事をありがとう。申し訳ありません、ここMCVE。シリンダーの反りのある画像の下にマスクがあります。私はこのマスクをシリンダー上の画像の上に置いて欲しい。それがあなたを助けることを願っています。ご返信いただきありがとうございます:) https://drive.google.com/file/d/0B0d1J3S0T2RseWJsNVFFZmFGMmM/view?usp=sharing – Alexandre

答えて

0

あなたは小さく開始する必要があるとしている、とあなたはシンプルなスケッチにあなたの問題を特定する必要があるとしています。今では、ビデオファイルの再生、カメラキャプチャ、シリアルセンサー、画像マスキング、OpenCVロジックなど、さまざまなことが進行中です。それはあまりにも一度にデバッグすることです。

代わりに、一つだけをしてはるかに小さい例のスケッチを作成します。単純にビデオの再生を示すスケッチから始めます。その作業をしたら、ビデオをテクスチャとして使用するロジックを追加します。ここで

はテクスチャとしてビデオを使用する方法を示している例MCVEです:

import processing.video.*; 

Movie movie; 

void setup() { 
    size(500, 500, P3D); 
    frameRate(30); 
    movie = new Movie(this, "DSC_1940.MOV"); 
    movie.loop(); 
} 

void draw() { 

    background(0); 

    beginShape(); 
    texture(movie); 

    vertex(mouseX, mouseY, 0, 0); 
    vertex(400, 100, movie.width, 0); 
    vertex(400, 400, movie.width, movie.height); 
    vertex(100, 400, 0, movie.height); 

    endShape(); 
} 

void movieEvent(Movie myMovie) { 
    myMovie.read(); 
} 

これはあなたのコードよりもはるかに単純であり、それは一度に一つのことを行うことに注意してください。このようなことからやり直し、可能な限りハードコーディングを試みてください。あなたのシリアルコードを見る必要はありません。可能であれば、ウェブカメラやOpenCVから何も見る必要はありません。

この例スケッチを取り、画像マスクを使用すること、またはその代わりに正方形のシリンダを使用するロジックを追加します。 (しかし、あなたの問題に直接関係していないロジックは含まないでください!)そして、あなたが立ち往生すると、MCVEとして新しい質問に投稿できます。がんばろう。

編集

あなたがやろうとしているすべては、あなたは、単にPImage::mask()機能を使用することができ、画像をマスクしている場合。詳細情報はthe referenceで見つけることができますが、それはあなたのコードでimg.mask(masque)を呼び出すのと同じくらい簡単でなければなりません:

img = loadImage("berlin-1.jpg"); 
masque = loadImage("mask.png"); 
img.mask(masque); 

その後、テクスチャとしてimg使用することができるはず、とマスクはすでに適用されています。

ただし、.pngファイルがマスクとして機能していないようです。私は(dataディレクトリにmask.jpgを見つけ、その後Sketch > Show Sketch Folder,に行き、その後、File > Examples > Image > Alphamaskに行き、自分の処理エディタで)例をマスキング画像からmask.jpgファイルを使用している場合か、私はそれは大丈夫作品.jpgファイルとして.pngファイルを保存した場合。

mask.jpgファイルを.pngファイルとして保存すると問題なく動作します。だから何かがあなたのファイルに間違っています。

+0

こんにちはKevin、お返事ありがとうございました。私はあなたに、データフォルダのあるスケッチをダウンロードするリンクを与えました。ここでは、使用したいテクスチャとマスク用のビデオではなく、写真で問題を切り分けました。 アレクサンドル – Alexandre

+0

@Alexandre おかげで、私はそのブロックのあなたのダウンロードリンクをファイアウォールの内側にしています。これは、あなたが投稿自体にすべてを入れることを求める一つの理由です。しかし、私の答えは、テクスチャとしてムービーを使用する方法を示しています。それでも問題が解決しない場合、私はその問題を解読し、更新されたMCVEで新しい質問を投稿することをお勧めします。がんばろう。 –

+0

こんにちはケビン私はMCVEで私の質問を編集し、私は使用しているマスクの種類を追加します。私はそれがより良くなることを願っています:) – Alexandre

関連する問題