相机视角(垂直和水平)

时间:2019-03-04 07:07:17

标签: matlab camera-view

我正在使用此代码模拟真实的相机来捕获3D对象:

patch(ax, Object3D, 'FaceColor', 'flat');
camva(ax, rad2deg(VerticalAOV));  % Set the camera field of view
camup(ax, [0 -1 0]);
campos(ax, [CameraPosition.X CameraPosition.Y CameraPosition.Z]);  % Put the camera at the origin
camtarget(ax, [CameraPosition.X CameraPosition.Y CameraPosition.Z] + [0 0 1]); % The camera looks along the +Z axis
camproj(ax,'perspective');
axis image;
axis off;
WidthResolution = SensorWidthResolution/(ax.Position(3));
Image = export_fig('temp.jpg',ax, sprintf('-r%f', WidthResolution),'-nocrop');
[ImageHeight, ImageWidth, Channels] = size(Image);
Image = imcrop(Image,[(ImageWidth-Width)/2, (ImageHeight-Height)/2, Width-1, Height-1]);

问题是:

  • 我使用VerticalAOV作为camva的输入。我根据此图像选择了VerticalAOV。但是,这是不合逻辑的。要获得真实的视图,应同时提供水平和垂直角度。

  • [ImageHeight,ImageWidth,Channels] = size(Image);返回错误 价值观。 ImageWidth和ImageHeight无法提供正确的 价值观。显然,其中的一个缺点将是错误的,因为 提供了AOV的一个维度。但是,为什么他们两个都是 不正确?

  • 我进行的裁剪是为了校正图像的尺寸。然而, 这似乎不是有用的步骤(我使用地面检查了结果 我有真实数据,但不匹配。)

P.S。可以在这里找到export_fig:https://github.com/altmany/export_fig

0 个答案:

没有答案