有哪些可以免费推广的网站,wordpress插件自动更新,知名广告公司,网站支付端口通过斗鸡眼#xff0c;将左右两张相似的图片叠加到一起看#xff0c;就会有3D效果。
3D图片#xff0c;3D眼镜#xff0c;3D视频等原理类似#xff0c;都是通过两眼视觉差引起脑补产生3D效果。
图片#xff1a; 图片来源#xff1a;
一些我拍摄的真*裸眼3D照片 - 哔哩… 通过斗鸡眼将左右两张相似的图片叠加到一起看就会有3D效果。
3D图片3D眼镜3D视频等原理类似都是通过两眼视觉差引起脑补产生3D效果。
图片 图片来源
一些我拍摄的真*裸眼3D照片 - 哔哩哔哩https://www.bilibili.com/read/cv13066106/?spm_id_from333.999.0.0 上边两幅图片在斗鸡眼下具有3D效果那两张图片有什么区别吗
1通过ps我们将两张图片叠加然后快速反复隐藏一张图片就可以看到两张图片有角度差。
也就是拍照的时候两张图片的镜头有移动。
2简单的分析就知道如何拍照但是如果我只有一张图片怎么处理下游3D效果呢开干。 单张图片处理成裸眼3D图片使图片叠加具有3D效果
先上效果图 斗鸡眼叠加图片就可以看到任务和背景分层次了因为我对背景和人物两个层次处理了。
如果仅仅把一个图片复制2次就算斗鸡眼叠加和原图一样效果即没有3D效果因为没有角度差。 步骤
首先打开ps打开原图原图是256*256将人物勾选 然后复制图层并把图层拉扁即左边位置不动把右侧往左拉shift鼠标移动右边界
效果 到这里人物就处理好了原图和移动后叠加图导出时把原图隐藏再导出
接下来处理背景
同理前边的人物向左压缩那么背景我们就反着来把背景往右压扁。
ctrlshifti可以对选取反选就很容易找到背景。
效果 可以看到右侧门框位置不动仅仅把背景往左拉伸了。
ps图层如下 原图不用变我们仅仅做一个256的前景右移背景左移的图片导出即可。
最终制作的人物和背景偏移图片就好了 将此图片和处理后的图片放到图片中。
上代码
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.FFmpegLogCallback;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;//裸眼3d图片斗鸡眼
public class TwoPic2 {private static final String LEFT_IMAGE_PATH D:\\desktop\\left.png;private static final String RIGHT_IMAGE_PATH D:\\desktop\\right2.png;private static final String all D:\\desktop\\all.png;//把图片交替合并为视频public static void main(String[] args) throws Exception {String outPutFile D:\\desktop\\all.mp4;FFmpegLogCallback.set();int imgWidth 256;int imgHeight 256;// FFmpegFrameRecorder处理视频帧//视频宽高最好是按照常见的视频的宽高 169 或者 916FFmpegFrameRecorder recorder new FFmpegFrameRecorder(outPutFile, imgWidth, imgHeight);//设置视频编码层模式recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);//1-代表1帧/sDouble FrameRate 30d;recorder.setFrameRate(FrameRate);/** videoBitRate这个参数很重要当然越大越清晰但最终的生成的视频也越大。* 查看一个资料说均衡考虑建议设为videoWidth*videoHeight*frameRate*0.07*运动因子运动因子则与视频中画面活动频繁程度有关如果很频繁就设为4不频繁则设为1*/int motionFactory 1;recorder.setVideoBitrate((int) ((imgWidth * imgHeight * FrameRate) * motionFactory * 0.07));//设置视频图像数据格式int pixelFormat avutil.AV_PIX_FMT_YUV420P;recorder.setPixelFormat(pixelFormat);String format mp4;recorder.setFormat(format);// 双通道(立体声)// recorder.setAudioChannels(grabber.getAudioChannels());recorder.setAudioChannels(2);recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);recorder.start();// 录制视频Java2DFrameConverter converter new Java2DFrameConverter();//URL imgUrl new URL(D:\\desktop\\test\\img1.png);//根据每秒的帧数 记录多少次图片,BufferedImage left ImageIO.read(new File(LEFT_IMAGE_PATH));BufferedImage right ImageIO.read(new File(RIGHT_IMAGE_PATH));Frame a converter.getFrame(left);Frame b converter.getFrame(right);int c20;while (c0){c--;for (int i 0; i 15; i) {recorder.record(converter.getFrame(ImageIO.read(new File(LEFT_IMAGE_PATH))));recorder.record(converter.getFrame(ImageIO.read(new File(RIGHT_IMAGE_PATH))));}}//recorder.close();}
}
这个代码是将两个256*256图片放到一张图片。
教程完毕。
通过本文章你应该理解了裸眼3D其实很简单。
欢迎大家关注下哈javacv相关文章持续增加。