Class CameraParameters
camera 매개변수는 이미지 크기, 초점 거리, 주점, camera 유형 및 기기 자연 방향에 대한 camera 회전 각도를 포함합니다.
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
초점 거리. 카메라의 등가 광심에서 CCD 평면까지의 거리를 너비와 높이 두 방향의 단위 픽셀 밀도로 나눈 값. 단위는 픽셀.
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
주점. 카메라의 주광축이 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, 후면 camera 또는 전면 camera. 데스크탑 기기는 모두 기본 camera이며, 모바일 기기는 후면 camera와 전면 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
카메라 이미지가 장치의 자연 방향에 표시될 때 시계 방향으로 회전해야 하는 각도입니다. 범위는 [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를 생성합니다. 기본 카메라 내부 파라미터(초점 거리, 주점)는 이미지 크기에 따라 자동으로 계산되지만, 특히 정확하지는 않습니다.
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를 생성합니다. 카메라 내부 파라미터(초점 거리, principal point, 왜곡 계수)와 카메라 모델을 지정해야 합니다. 카메라 모델 지원은 CameraModelType을 참조하십시오.
참고: 이 인터페이스 사용 시 주의가 필요하며, 잘못된 입력 데이터는 객체 생성 실패로 이어져 null이 반환될 수 있습니다.
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를 가져옵니다.
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)
매개 변수
반환 값
imageOrientation
화면과 정렬하기 위해 이미지를 화면에 상대적으로 시계 방향으로 회전해야 하는 각도를 계산합니다.
screenRotation은 화면 이미지가 자연 방향에 상대적으로 시계 방향으로 회전된 각도입니다.
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
이미지의 좌우 반전 필요 여부를 계산합니다. 이미지 렌더링 시에는 먼저 회전을 수행한 후 반전을 적용합니다. cameraDeviceType이 전면 카메라인 경우 자동으로 반전이 처리되며, 이 상태에서 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
가상 객체를 렌더링하기 위해 필요한 원근 투영 행렬을 계산합니다. 이 행렬은 카메라 좌표계의 점을 클리핑 좌표계([-1, 1]^4)로 변환합니다(z축을 중심으로 한 회전 포함). 이 원근 투영 행렬의 형태는 OpenGL과 동일하며, 행렬 오른쪽에 점의 동차 좌표 열 벡터를 곱하는 방식입니다(Direct3D처럼 행렬 왼쪽에 곱하는 방식이 아님). 단, 데이터 배치 방식은 OpenGL의 column-major와 반대로 row-major입니다. 클리핑 좌표계와 정규화된 장치 좌표계(NDC)의 정의는 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
렌더링 카메라 배경 이미지에 필요한 직교 투영 행렬을 계산하여, 이미지 사각형 좌표계([-1, 1]^2)의 점을 클립 공간 좌표계([-1, 1]^4)로 변환합니다(z-축 회전 포함). 정의되지 않은 두 차원은 그대로 유지됩니다. 직교 투영 행렬의 형식은 OpenGL과 동일하며, 행렬 오른쪽에 점의 동차 좌표를 곱하는 방식입니다(Direct3D의 행렬 왼쪽 곱셈 방식과 다름). 그러나 데이터 배치는 row-major 방식으로, OpenGL의 column-major 방식과는 반대입니다. 클립 공간 좌표계와 정규화된 장치 좌표계(NDC)의 정의는 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
이미지 좌표계([0,1]^2)에서 스크린 좌표계([0,1]^2)로의 변환입니다. 두 좌표계 모두 x는 오른쪽, y는 아래쪽을 향하며 원점은 좌측 상단에 위치합니다.
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
스크린 좌표계([0,1]^2)에서 이미지 좌표계([0,1]^2)로 변환된다. 두 좌표계 모두 x는 오른쪽, y는 아래쪽을 가리키며, 원점은 좌상단에 위치한다.
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
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)
매개 변수
반환 값