我目前有一個Matlab代碼,從兩個網絡攝像頭拍攝圖像,覆蓋它們並將它們顯示在一個圖形中,該圖形在時間間隔內得到更新以提供半實時。 但是,我需要做到這一點實時,沒有人有任何想法如何覆蓋兩個攝像頭流,就像你會用3D電影做什麼?疊加兩個網絡攝像頭流 - Matlab
謝謝!
我目前有一個Matlab代碼,從兩個網絡攝像頭拍攝圖像,覆蓋它們並將它們顯示在一個圖形中,該圖形在時間間隔內得到更新以提供半實時。 但是,我需要做到這一點實時,沒有人有任何想法如何覆蓋兩個攝像頭流,就像你會用3D電影做什麼?疊加兩個網絡攝像頭流 - Matlab
謝謝!
我建議在OpenCV中使用它。
如果你的意思Anaglyph 3D,同時具有圖片,你可以做到以下幾點:
left = imread('vipstereo_hallwayLeft.png');
right = imread('vipstereo_hallwayRight.png');
imshow(cat(3, left(:,:,1), right(:,:,2:3)));
兩個PNG的已經配備了圖像處理工具箱。
結果將是這個(你可以看看它與紅/青色眼鏡我做到了!):
我已經嘗試過這種方法與真正圖片在兩個方面:
1同時拍攝2張照片,2張不同的照相機稍有偏移;
2.使用移動攝像頭在很短的時間拍攝的2張照片。 (突發模式)
他們都給出了卓越的結果。
然後,用2個攝像頭做到這一點,你需要:
1.初始化他們正確;
2.設置它們爲每個觸發器獲得1幀;
3.觸發它們並獲得兩個幀;
4.混合幀並顯示它們。
我沒有2個的攝像頭,所以我沒能測試,但我覺得這個代碼可以做到這一點:
相機設置:
% 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
注意,因爲我的攝像頭是YUV我必須把它轉換爲RGB混合圖像之前。
希望這可以幫助你!
我有問題可視化此。你可以顯示你的輸出的示例圖像嗎? – PearsonArtPhoto 2012-03-29 15:12:27
像這樣:http://programmerpayback.com/2011/04/16/live-stereoscopic-3d-in-the-mmp-player-framework/然而,不是有一個攝像頭紅色和另一個藍色,就像他們一樣將不會拆分色彩空間。 – user1300561 2012-03-30 14:38:23
我看着你的鏈接@ user1300561:非常酷的想法。唉,我無法回答你的問題: - / – Richard 2012-09-18 12:28:53