Class CameraParameters
camera parameters, включая размер изображения, focal length, principal point, тип camera и угол поворота camera относительно device natural orientation.
CameraParameters
Конструкторы
CameraParameters
void easyar_CameraParameters__ctor(easyar_Vec2I imageSize, easyar_Vec2F focalLength, easyar_Vec2F principalPoint, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_CameraParameters * * Return)
CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
public CameraParameters(@Nonnull Vec2I imageSize, @Nonnull Vec2F focalLength, @Nonnull Vec2F principalPoint, int cameraDeviceType, int cameraOrientation)
constructor(imageSize: Vec2I, focalLength: Vec2F, principalPoint: Vec2F, cameraDeviceType: Int, cameraOrientation: Int)
+ (easyar_CameraParameters *) create:(easyar_Vec2I *)imageSize focalLength:(easyar_Vec2F *)focalLength principalPoint:(easyar_Vec2F *)principalPoint cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public convenience init(_ imageSize: Vec2I, _ focalLength: Vec2F, _ principalPoint: Vec2F, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
Параметры
Методы
size
easyar_Vec2I easyar_CameraParameters_size(const easyar_CameraParameters * This)
public @Nonnull Vec2I size()
public func size() -> Vec2I
public virtual Vec2I size()
Возвращаемое значение
focalLength
Focal length. Расстояние от эквивалентного optical center camera до плоскости CCD, деленное на unit pixel density в направлениях ширины и высоты. Единица измерения - пиксели.
easyar_Vec2F easyar_CameraParameters_focalLength(const easyar_CameraParameters * This)
public @Nonnull Vec2F focalLength()
- (easyar_Vec2F *)focalLength
public func focalLength() -> Vec2F
public virtual Vec2F focalLength()
Возвращаемое значение
principalPoint
Principal point. Пиксельные координаты от точки пересечения главной optical axis camera с плоскостью CCD до верхнего левого угла изображения. Единица измерения - пиксели.
easyar_Vec2F easyar_CameraParameters_principalPoint(const easyar_CameraParameters * This)
public @Nonnull Vec2F principalPoint()
fun principalPoint(): Vec2F
- (easyar_Vec2F *)principalPoint
public func principalPoint() -> Vec2F
public virtual Vec2F principalPoint()
Возвращаемое значение
cameraModelType
easyar_CameraModelType easyar_CameraParameters_cameraModelType(const easyar_CameraParameters * This)
CameraModelType cameraModelType()
public int cameraModelType()
fun cameraModelType(): Int
- (easyar_CameraModelType)cameraModelType
public func cameraModelType() -> CameraModelType
public virtual CameraModelType cameraModelType()
Возвращаемое значение
cameraDeviceType
Тип camera device. Default camera, back camera или front camera. Desktop-устройства всегда являются default camera, а mobile-устройства различают back camera и front camera.
easyar_CameraDeviceType easyar_CameraParameters_cameraDeviceType(const easyar_CameraParameters * This)
CameraDeviceType cameraDeviceType()
public int cameraDeviceType()
fun cameraDeviceType(): Int
- (easyar_CameraDeviceType)cameraDeviceType
public func cameraDeviceType() -> CameraDeviceType
public virtual CameraDeviceType cameraDeviceType()
Возвращаемое значение
cameraOrientation
Угол поворота по часовой стрелке, необходимый для отображения camera image в device natural orientation. Диапазон [0, 360). Android-телефоны и некоторые Android-планшеты имеют 90 градусов. Android-очки и некоторые Android-планшеты имеют 0 градусов. Существующие iOS-устройства имеют 90 градусов.
int easyar_CameraParameters_cameraOrientation(const easyar_CameraParameters * This)
public int cameraOrientation()
fun cameraOrientation(): Int
public func cameraOrientation() -> Int32
public virtual int cameraOrientation()
Возвращаемое значение
createWithDefaultIntrinsics
Создает CameraParameters с default camera intrinsics. Default camera intrinsics (focal length и principal point) автоматически вычисляются по размеру изображения, но они не особенно точны.
void easyar_CameraParameters_createWithDefaultIntrinsics(easyar_Vec2I imageSize, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_CameraParameters * * Return)
static std::shared_ptr<CameraParameters> createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
public static @Nonnull CameraParameters createWithDefaultIntrinsics(@Nonnull Vec2I imageSize, int cameraDeviceType, int cameraOrientation)
companion object fun createWithDefaultIntrinsics(imageSize: Vec2I, cameraDeviceType: Int, cameraOrientation: Int): CameraParameters
+ (easyar_CameraParameters *)createWithDefaultIntrinsics:(easyar_Vec2I *)imageSize cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public static func createWithDefaultIntrinsics(_ imageSize: Vec2I, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32) -> CameraParameters
public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
Параметры
Возвращаемое значение
tryCreateWithCustomIntrinsics
Создает CameraParameters с custom camera intrinsics. Нужно указать camera intrinsics (focal length, principal point, distortion coefficients) и camera model. Поддерживаемые camera model см. в CameraModelType. Примечание: используйте этот интерфейс осторожно. Неверные входные данные могут привести к неудачному созданию объекта и возврату empty.
void easyar_CameraParameters_tryCreateWithCustomIntrinsics(easyar_Vec2I imageSize, easyar_ListOfFloat * cameraParamList, easyar_CameraModelType cameraModel, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_OptionalOfCameraParameters * Return)
static std::optional<std::shared_ptr<CameraParameters>> tryCreateWithCustomIntrinsics(Vec2I imageSize, std::vector<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
public static @Nullable CameraParameters tryCreateWithCustomIntrinsics(@Nonnull Vec2I imageSize, java.util.@Nonnull ArrayList<java.lang.@Nonnull Float> cameraParamList, int cameraModel, int cameraDeviceType, int cameraOrientation)
companion object fun tryCreateWithCustomIntrinsics(imageSize: Vec2I, cameraParamList: ArrayList<Float>, cameraModel: Int, cameraDeviceType: Int, cameraOrientation: Int): CameraParameters?
+ (easyar_CameraParameters *)tryCreateWithCustomIntrinsics:(easyar_Vec2I *)imageSize cameraParamList:(NSArray<NSNumber *> *)cameraParamList cameraModel:(easyar_CameraModelType)cameraModel cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public static func tryCreateWithCustomIntrinsics(_ imageSize: Vec2I, _ cameraParamList: [Float], _ cameraModel: CameraModelType, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32) -> CameraParameters?
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
Параметры
Возвращаемое значение
getResized
Получает эквивалентные CameraParameters после изменения размера camera image.
void easyar_CameraParameters_getResized(easyar_CameraParameters * This, easyar_Vec2I imageSize, easyar_CameraParameters * * Return)
std::shared_ptr<CameraParameters> getResized(Vec2I imageSize)
public @Nonnull CameraParameters getResized(@Nonnull Vec2I imageSize)
fun getResized(imageSize: Vec2I): CameraParameters
- (easyar_CameraParameters *)getResized:(easyar_Vec2I *)imageSize
public func getResized(_ imageSize: Vec2I) -> CameraParameters
public virtual CameraParameters getResized(Vec2I imageSize)
Параметры
| Имя |
Тип |
Описание |
| imageSize |
Vec2I |
|
Возвращаемое значение
imageOrientation
Вычисляет угол по часовой стрелке, на который 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
int easyar_CameraParameters_imageOrientation(const easyar_CameraParameters * This, int screenRotation)
int imageOrientation(int screenRotation)
public int imageOrientation(int screenRotation)
fun imageOrientation(screenRotation: Int): Int
- (int)imageOrientation:(int)screenRotation
public func imageOrientation(_ screenRotation: Int32) -> Int32
public virtual int imageOrientation(int screenRotation)
Параметры
| Имя |
Тип |
Описание |
| screenRotation |
Int32 |
|
Возвращаемое значение
imageHorizontalFlip
Вычисляет, нужно ли выполнять горизонтальное отражение image. При рендеринге image сначала применяется поворот, затем отражение. Когда cameraDeviceType является front camera, отражение выполняется автоматически; manualHorizontalFlip можно передать, чтобы добавить еще одно ручное отражение.
bool easyar_CameraParameters_imageHorizontalFlip(const easyar_CameraParameters * This, bool manualHorizontalFlip)
bool imageHorizontalFlip(bool manualHorizontalFlip)
public boolean imageHorizontalFlip(boolean manualHorizontalFlip)
fun imageHorizontalFlip(manualHorizontalFlip: Boolean): Boolean
- (bool)imageHorizontalFlip:(bool)manualHorizontalFlip
public func imageHorizontalFlip(_ manualHorizontalFlip: Bool) -> Bool
public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)
Параметры
| Имя |
Тип |
Описание |
| manualHorizontalFlip |
Boolean |
|
Возвращаемое значение
projection
Вычисляет 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 по умолчанию.
easyar_Matrix44F easyar_CameraParameters_projection(const easyar_CameraParameters * This, float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
public @Nonnull Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip)
fun projection(nearPlane: Float, farPlane: Float, viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean): Matrix44F
- (easyar_Matrix44F *)projection:(float)nearPlane farPlane:(float)farPlane viewportAspectRatio:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip
public func projection(_ nearPlane: Float, _ farPlane: Float, _ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool) -> Matrix44F
public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Параметры
| Имя |
Тип |
Описание |
| nearPlane |
Single |
|
| farPlane |
Single |
|
| viewportAspectRatio |
Single |
|
| screenRotation |
Int32 |
|
| combiningFlip |
Boolean |
|
| manualHorizontalFlip |
Boolean |
|
Возвращаемое значение
imageProjection
Вычисляет 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 по умолчанию.
easyar_Matrix44F easyar_CameraParameters_imageProjection(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
public @Nonnull Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip)
fun imageProjection(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean): Matrix44F
- (easyar_Matrix44F *)imageProjection:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip
public func imageProjection(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool) -> Matrix44F
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Параметры
| Имя |
Тип |
Описание |
| viewportAspectRatio |
Single |
|
| screenRotation |
Int32 |
|
| combiningFlip |
Boolean |
|
| manualHorizontalFlip |
Boolean |
|
Возвращаемое значение
screenCoordinatesFromImageCoordinates
Преобразует из image coordinate system ([0, 1]^2) в screen coordinate system ([0, 1]^2). В обеих coordinate system ось x направлена вправо, ось y вниз, а origin находится в верхнем левом углу.
easyar_Vec2F easyar_CameraParameters_screenCoordinatesFromImageCoordinates(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, easyar_Vec2F imageCoordinates)
Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
public @Nonnull Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip, @Nonnull Vec2F imageCoordinates)
fun screenCoordinatesFromImageCoordinates(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean, imageCoordinates: Vec2F): Vec2F
- (easyar_Vec2F *)screenCoordinatesFromImageCoordinates:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip imageCoordinates:(easyar_Vec2F *)imageCoordinates
public func screenCoordinatesFromImageCoordinates(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool, _ imageCoordinates: Vec2F) -> Vec2F
public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
Параметры
| Имя |
Тип |
Описание |
| viewportAspectRatio |
Single |
|
| screenRotation |
Int32 |
|
| combiningFlip |
Boolean |
|
| manualHorizontalFlip |
Boolean |
|
| imageCoordinates |
Vec2F |
|
Возвращаемое значение
imageCoordinatesFromScreenCoordinates
Преобразует из screen coordinate system ([0, 1]^2) в image coordinate system ([0, 1]^2). В обеих coordinate system ось x направлена вправо, ось y вниз, а origin находится в верхнем левом углу.
easyar_Vec2F easyar_CameraParameters_imageCoordinatesFromScreenCoordinates(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, easyar_Vec2F screenCoordinates)
Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
public @Nonnull Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip, @Nonnull Vec2F screenCoordinates)
fun imageCoordinatesFromScreenCoordinates(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean, screenCoordinates: Vec2F): Vec2F
- (easyar_Vec2F *)imageCoordinatesFromScreenCoordinates:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip screenCoordinates:(easyar_Vec2F *)screenCoordinates
public func imageCoordinatesFromScreenCoordinates(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool, _ screenCoordinates: Vec2F) -> Vec2F
public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
Параметры
| Имя |
Тип |
Описание |
| viewportAspectRatio |
Single |
|
| screenRotation |
Int32 |
|
| combiningFlip |
Boolean |
|
| manualHorizontalFlip |
Boolean |
|
| screenCoordinates |
Vec2F |
|
Возвращаемое значение
equalsTo
Определяет, равны ли два набора parameters.
bool easyar_CameraParameters_equalsTo(const easyar_CameraParameters * This, easyar_CameraParameters * other)
bool equalsTo(std::shared_ptr<CameraParameters> other)
public boolean equalsTo(@Nonnull CameraParameters other)
fun equalsTo(other: CameraParameters): Boolean
- (bool)equalsTo:(easyar_CameraParameters *)other
public func equalsTo(_ other: CameraParameters) -> Bool
public virtual bool equalsTo(CameraParameters other)
Параметры
Возвращаемое значение