Table of Contents

Class CameraParameters

Пространство имен
easyar
Сборка
EasyAR.Sense.dll

camera parameters, включая размер изображения, focal length, principal point, тип camera и угол поворота camera относительно device natural orientation.

public class CameraParameters : RefBase, IDisposable
Наследование
CameraParameters
Реализация
Наследуемые члены

Конструкторы

CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)

public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
focalLength
principalPoint
cameraDeviceType
cameraOrientation

Методы

Clone()

public CameraParameters Clone()

cameraDeviceType()

Тип camera device. Default camera, back camera или front camera. Desktop-устройства всегда являются default camera, а mobile-устройства различают back camera и front camera.

public virtual CameraDeviceType cameraDeviceType()

cameraModelType()

Camera model.

public virtual CameraModelType cameraModelType()

cameraOrientation()

Угол поворота по часовой стрелке, необходимый для отображения camera image в device natural orientation. Диапазон [0, 360). Android-телефоны и некоторые Android-планшеты имеют 90 градусов. Android-очки и некоторые Android-планшеты имеют 0 градусов. Существующие iOS-устройства имеют 90 градусов.

public virtual int cameraOrientation()

createWithDefaultIntrinsics(Vec2I, CameraDeviceType, int)

Создает CameraParameters с default camera intrinsics. Default camera intrinsics (focal length и principal point) автоматически вычисляются по размеру изображения, но они не особенно точны.

public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
cameraDeviceType
cameraOrientation

equalsTo(CameraParameters)

Определяет, равны ли два набора parameters.

public virtual bool equalsTo(CameraParameters other)

Параметры

other

focalLength()

Focal length. Расстояние от эквивалентного optical center camera до плоскости CCD, деленное на unit pixel density в направлениях ширины и высоты. Единица измерения - пиксели.

public virtual Vec2F focalLength()

getResized(Vec2I)

Получает эквивалентные CameraParameters после изменения размера camera image.

public virtual CameraParameters getResized(Vec2I imageSize)

Параметры

imageSize

imageCoordinatesFromScreenCoordinates(float, int, bool, bool, Vec2F)

Преобразует из screen coordinate system ([0, 1]^2) в image coordinate system ([0, 1]^2). В обеих coordinate system ось x направлена вправо, ось y вниз, а origin находится в верхнем левом углу.

public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip
screenCoordinates

imageHorizontalFlip(bool)

Вычисляет, нужно ли выполнять горизонтальное отражение image. При рендеринге image сначала применяется поворот, затем отражение. Когда cameraDeviceType является front camera, отражение выполняется автоматически; manualHorizontalFlip можно передать, чтобы добавить еще одно ручное отражение.

public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)

Параметры

manualHorizontalFlip

imageOrientation(int)

Вычисляет угол по часовой стрелке, на который image нужно повернуть относительно screen, чтобы выровнять его со screen. screenRotation - это угол поворота screen image по часовой стрелке относительно natural orientation. Для iOS: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Для Android: * Surface.ROTATION_0: screenRotation = 0 * Surface.ROTATION_90: screenRotation = 90 * Surface.ROTATION_180: screenRotation = 180 * Surface.ROTATION_270: screenRotation = 270

public virtual int imageOrientation(int screenRotation)

Параметры

screenRotation

imageProjection(float, int, bool, bool)

Вычисляет orthographic projection matrix, необходимую для рендеринга camera background image, преобразуя точки в image rectangle coordinate system ([-1, 1]^2) в clip coordinate system ([-1, 1]^4), включая поворот вокруг оси z, при этом две неопределенные размерности остаются неизменными. Orthographic projection matrix имеет ту же форму, что и в OpenGL: матрица умножается справа на однородные координаты точки, а не слева, как в Direct3D. Данные расположены в порядке row-major, противоположном column-major в OpenGL. Определения clip coordinate system и normalized device coordinate system совпадают с настройками OpenGL по умолчанию.

public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip

principalPoint()

Principal point. Пиксельные координаты от точки пересечения главной optical axis camera с плоскостью CCD до верхнего левого угла изображения. Единица измерения - пиксели.

public virtual Vec2F principalPoint()

projection(float, float, float, int, bool, bool)

Вычисляет perspective projection matrix, необходимую для рендеринга virtual objects, преобразуя точки в camera coordinate system в clip coordinate system ([-1, 1]^4), включая поворот вокруг оси z. Perspective projection matrix имеет ту же форму, что и в OpenGL: матрица умножается справа на column vector однородных координат точки, а не слева, как в Direct3D. Данные расположены в порядке row-major, противоположном column-major в OpenGL. Определения clip coordinate system и normalized device coordinate system совпадают с настройками OpenGL по умолчанию.

public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

Параметры

nearPlane
farPlane
viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip

screenCoordinatesFromImageCoordinates(float, int, bool, bool, Vec2F)

Преобразует из image coordinate system ([0, 1]^2) в screen coordinate system ([0, 1]^2). В обеих coordinate system ось x направлена вправо, ось y вниз, а origin находится в верхнем левом углу.

public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)

Параметры

viewportAspectRatio
screenRotation
combiningFlip
manualHorizontalFlip
imageCoordinates

size()

Размер изображения.

public virtual Vec2I size()

tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)

Создает CameraParameters с custom camera intrinsics. Нужно указать camera intrinsics (focal length, principal point, distortion coefficients) и camera model. Поддерживаемые camera model см. в CameraModelType. Примечание: используйте этот интерфейс осторожно. Неверные входные данные могут привести к неудачному созданию объекта и возврату empty.

public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)

Параметры

imageSize
cameraParamList
cameraModel
cameraDeviceType
cameraOrientation