2012-03-29 11 views
5

現在、Matlabには2つのウェブカメラから画像を取り込み、それらを重ね合わせて半時間リアルタイムに表示する時間間隔で更新されるコードが表示されます。 しかし、私はこれをリアルタイムで行う必要があります.3Dムービーと同じように、2つのウェブカメラストリームをどのように重ねるか考えている人はいますか?2つのWebカムストリームを重ね合わせる - Matlab

ありがとうございます!

+0

私はこれを視覚化する際に問題があります。出力のサンプル画像を表示できますか? – PearsonArtPhoto

+0

このように:http://programmerpayback.com/2011/04/16/live-stereoscopic-3d-in-the-mmp-player-framework/しかし、1つのカメラを赤色にし、もう1つを青色にするのではなく、色空間を分割することなく行うことができる。 – user1300561

+0

私はあなたのリンク@ user1300561を見ました:非常にクールなアイデア。ああ、私はあなたの質問に答えることはできません: - / – Richard

答えて

0

私はOpenCVでやってみることをお勧めします。

1

あなたは次の操作を行うことができ、両方の画像持つ、Anaglyph 3Dを意味する場合は、次の両方のPNGのすでに画像処理ツールボックスが付属して

left = imread('vipstereo_hallwayLeft.png'); 
right = imread('vipstereo_hallwayRight.png'); 

imshow(cat(3, left(:,:,1), right(:,:,2:3))); 

を。

結果はこれになります(。あなたは赤/シアンメガネでそれを見ることができ、私はやった!):
1:私はすでに2つの方法でリアル写真と、この方法を試してみました image

2枚の異なるカメラで同時に撮影した2枚の写真。
2.移動中のカメラで2枚の写真を非常に短時間で撮影しました。 (バーストモード)
両者とも優れた結果を出しました。


その後、2つのWebカメラでそれを行うには、以下を行う必要があります。
1.それらを適切にin​​itに。
2.トリガーごとに1フレームを取得するように設定します。
3.トリガーして両方のフレームを取得します。
4.フレームをミックスして表示します。

私はそれをテストするには、noできなかったので、私は2つのWebカメラを持っていないが、私はこのコードはそれを行うことができると思い

カメラのセットアップ:

% Get a handle to each cam 
Lvid = videoinput('winvideo', 1, 'YUY2_1280x1024'); 
Rvid = videoinput('winvideo', 2, 'YUY2_1280x1024'); 

% Set them to get one frame/trigger 
Lvid.FramesPerTrigger = 1; 
Rvid.FramesPerTrigger = 1; 

その後のフレームを取得するために、無限ループを行いますそれらをミックスして結果を表示します。

while(1) 
    % Trigers both video sources 
    start(Lvid); 
    start(Rvid); 

    % Get the frames 
    left = getdata(Lvid); 
    right = getdata(Rvid); 

    % Convert them to RGB 
    left = ycbcr2rgb(left); 
    right = ycbcr2rgb(right); 
    % mix them (R from right + GB from left) 
    frame = cat(3, left(:,:,1), right(:,:,2:3)); 
    % show 
    imshow(frame); 
    pause(0.0001) % to refresh imshow 
end 

なお、私のウェブカメラは、私が前に画像を混合するRGBに変換する必要がYUVであるから。

希望すると、これが役立ちます。

関連する問題