Угол обзора камеры (вертикальный и горизонтальный) - PullRequest
0 голосов
/ 04 марта 2019

Я использую этот код для имитации реальной камеры для захвата 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.Однако, почему они оба не верны?

  • Я сделал обрезку, чтобы скорректировать размеры изображения.Тем не менее, это, кажется, бесполезный шаг (я проверил результат, используя основополагающие данные истинности, которые у меня есть, и они не совпадали).

PS export_fig можно найти здесь: https://github.com/altmany/export_fig

...