这一节主要是讲解基于VSRS视点合成,包括左右、前后以及全方位视点合成效果!
一、前期工作
VS2013安装、OpenCV、VSRS安装配置以及YUV player,具体详见:VS2013+OpenCV2.4.9+VSRS3.5
二、视点合成准备工作
这部分仍然需要用到VS2013,因为可能需要用VS2013跑一个根据左右视点得到虚拟视点的示例,当然VSRS3.5也是必不可少的,这里需要一个ViewSynVC8.exe,我的在D:\VSRS3.5\trunk\bin安装目录下。除此之外,还需要MATLAB,因为要用MATLAB编写任意视点的代码,最后将任意视点的图片转换为视屏或者动态图就可以了。
三、视点合成
1.单独图像生成
正式进入视点合成阶段,最最最重要的就是编写视点合成代码以及一个个独立视点转化为视屏或动态图的代码,我这里是将其转化为视屏了。
image_height=768;image_width=1024;%这里是图像高和宽
dir_path = 'balloons';%气球那个文件夹
txt_path='\camera_parameter_balloons';%.txt文件,即相机参数文件
cfg_path='\recover_para';%.cfg文件,即配置文件
local_path='C:\Users\yyong\Desktop\3D\balloons';%气球文件在电脑上的位置,但要放在C:\Users\yyong\Desktop\3D里面
r=30;%这里会生成60张独立合成视点
for k=0:1:2*r
fidin1=fopen([dir_path, txt_path, '.txt'], 'r+');% 打开需要读取的文件
fidin2=fopen([dir_path, txt_path, '1.txt'], 'wt');% 创建读取的文件
fidin3=fopen([dir_path, cfg_path, '.cfg'], 'r+');% 打开读取的文件
fidin4=fopen([dir_path, cfg_path, '1.cfg'], 'wt');% 创建读取的文件
i=0;
while ~feof(fidin1)%判断是否为文件末尾
tline=fgetl(fidin1);%从文件读行,tline是一个字符串,可以当做数组用
i=i+1;
if i==37
ljx = ['1.0 0.0 0.0 ',num2str(cos(1/30*pi*k)*r+r)];
fprintf(fidin2,'%s\n',ljx); %改变x轴,即左右
elseif i==39
ljx = ['0.0 0.0 1.0 ',num2str(sin(1/30*pi*k)*r+r)];
fprintf(fidin2,'%s\n',ljx); %改变z轴,即前后
else
fprintf(fidin2,'%s\n',tline); %相机参数其他部分直接复制
end
end
fclose(fidin1);
fclose(fidin2);
i=0;
while ~feof(fidin3)
tline=fgetl(fidin3);%读取一行
i=i+1;
if i==11
ljx = ['CameraParameterFile ', local_path, txt_path, '1.txt'];
fprintf(fidin4,'%s\n',ljx); %在配置文件中更改引用相机参数那行
else
fprintf(fidin4,'%s\n',tline); %除引用相机参数那行以外,其他部分直接复制
end

该博客详细介绍了如何基于VSRS进行视点合成,包括前期的VS2013、OpenCV、VSRS和YUV player的安装配置,以及视点合成的步骤:单独图像生成、图像转视频和生成一张图像。特别强调了在不同阶段需要注意的代码修改和配置文件设置。
最低0.47元/天 解锁文章
605

被折叠的 条评论
为什么被折叠?



