Если вы имеете в виду 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 снимка, сделанные за очень короткое время с помощью движущейся камеры.(режим серийной съемки)
И оба они дали превосходные результаты.
Затем, чтобы сделать это с двумя веб-камерами, вам необходимо:
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 перед смешиванием изображений.
Надеюсь, это поможет вам!