Convert 3D movies with split frames to Anaglyph 3D movies for viewing with red (blue/cyan/green) 3D glasses.
If a 3D video is available, frames can be extracted by specifying the frame position. 3D video files can be found here.
BufferedImage frame = FleurVideo.extract(new File("3dVideo.mp4"), 6000);
List<BufferedImage> splited = Fleur3dUtil.split(frame);
BufferedImage frameCombined = FleurFilter.additive(
FleurFilter.color(splited.get(0), ColorMask.RED),
FleurFilter.color(splited.get(1), ColorMask.CYAN));
ImageHelper.saveImage(frameCombined, "frame_combined.png");
FleurVideo.extract(new File("3dVideo.mp4"), 6000);
Left Frame | Right Frame |
---|---|
List<BufferedImage> splited = Fleur3dUtil.split(frame);
BufferedImage combined = FleurFilter.alphaCombine(frame1, frame2);
Left Frame with Red Filter | Right Frame with Cyan Filter |
---|---|
BufferedImage redFilterImg = FleurFilter.color(splited.get(0), FilterColor.RED);
BufferedImage greenBlueFilterImg = FleurFilter.color(splited.get(1), FilterColor.CYAN);
BufferedImage additiveCombinedFrame = FleurFilter.additive(
FleurFilter.color(splited.get(0), FilterColor.RED),
FleurFilter.color(splited.get(1), FilterColor.CYAN)
);
List<BufferedImage> images = FleurVideo.extract(new File("3dVideo.mp4"), 6000, 6010);
List<BufferedImage> videoImages = new ArrayList<>();
for (BufferedImage image : images) {
List<BufferedImage> splits = Fleur3dUtil.split(image);
videoImages.add(FleurFilter.additive(
FleurFilter.color(splits.get(0), ColorMask.RED),
FleurFilter.color(splits.get(1), ColorMask.CYAN)
));
}
FleurVideo.create(videoImages, "3dVideoOut.mp4");
Left Video | Right Video |
---|---|
List<BufferedImage> images = FleurVideo.extract(new File("3dVideo.mp4"), 6000, 6100);
List<BufferedImage> leftArray = new ArrayList<>();
List<BufferedImage> rightArray = new ArrayList<>();
for (BufferedImage image : images) {
List<BufferedImage> splits = Fleur3dUtil.split(image);
leftArray.add(splits.get(0));
rightArray.add(splits.get(1));
}
FleurVideo.create(leftArray, "left.mp4");
FleurVideo.create(rightArray, "right.mp4");
To view: play both videos on separate projectors or use active shutter 3D glasses on a 60Hz monitor.