Class CameraParameters
- Ruang Nama
- easyar
- Rakitan
- EasyAR.Sense.dll
Parameter kamera, termasuk ukuran gambar, panjang fokus, titik utama, jenis kamera, dan sudut rotasi kamera relatif terhadap orientasi alami perangkat.
public class CameraParameters : RefBase, IDisposable
- Pewarisan
-
CameraParameters
- Menerapkan
- Anggota Pewarisan
Konstruktor
CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizefocalLengthprincipalPointcameraDeviceTypecameraOrientation
Metode
Clone()
public CameraParameters Clone()
CloneObject()
protected override object CloneObject()
cameraDeviceType()
Jenis perangkat kamera. Kamera default, kamera belakang, atau kamera depan. Perangkat desktop semuanya kamera default, perangkat seluler membedakan kamera belakang dan kamera depan.
public virtual CameraDeviceType cameraDeviceType()
cameraModelType()
Model kamera.
public virtual CameraModelType cameraModelType()
cameraOrientation()
Sudut rotasi searah jarum jam yang diperlukan untuk menampilkan gambar kamera pada orientasi alami perangkat. Rentang [0, 360). Ponsel Android dan beberapa tablet Android adalah 90 derajat. Kacamata Android dan beberapa tablet Android adalah 0 derajat. Perangkat iOS yang ada semuanya 90 derajat.
public virtual int cameraOrientation()
createWithDefaultIntrinsics(Vec2I, CameraDeviceType, int)
Membuat CameraParameters dengan parameter internal kamera default. Parameter internal kamera default (panjang fokus, titik utama) dihitung secara otomatis berdasarkan ukuran gambar, tetapi tidak terlalu akurat.
public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraDeviceTypecameraOrientation
equalsTo(CameraParameters)
Menentukan apakah dua set parameter sama.
public virtual bool equalsTo(CameraParameters other)
Parameter
other
focalLength()
Panjang fokus. Jarak dari pusat optik setara kamera ke bidang CCD dibagi dengan kepadatan piksel per unit pada arah lebar dan tinggi. Satuan piksel.
public virtual Vec2F focalLength()
getResized(Vec2I)
Mendapatkan CameraParameters setara setelah ukuran gambar kamera diubah.
public virtual CameraParameters getResized(Vec2I imageSize)
Parameter
imageSize
imageCoordinatesFromScreenCoordinates(float, int, bool, bool, Vec2F)
Transformasi dari sistem koordinat layar ([0, 1]^2) ke sistem koordinat gambar ([0, 1]^2), kedua sistem koordinat memiliki x ke kanan, y ke bawah, asal di sudut kiri atas.
public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipscreenCoordinates
imageHorizontalFlip(bool)
Menghitung apakah gambar perlu dibalik secara horizontal. Saat merender gambar, rotasi dilakukan terlebih dahulu, kemudian pembalikan. Ketika cameraDeviceType adalah kamera depan, pembalikan otomatis dilakukan. Berdasarkan ini, manualHorizontalFlip dapat diteruskan untuk menambahkan pembalikan manual tambahan.
public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)
Parameter
manualHorizontalFlip
imageOrientation(int)
Menghitung sudut rotasi searah jarum jam yang diperlukan gambar relatif terhadap layar untuk sejajar dengan layar. screenRotation adalah sudut rotasi searah jarum jam gambar layar relatif terhadap orientasi alami. Untuk iOS: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Untuk 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)
Parameter
screenRotation
imageProjection(float, int, bool, bool)
Menghitung matriks proyeksi ortografis yang diperlukan untuk merender gambar latar belakang kamera, mentransformasikan titik dari sistem koordinat persegi panjang gambar ([-1, 1]^2) ke sistem koordinat klip ([-1, 1]^4) (termasuk rotasi di sekitar sumbu z), dua dimensi yang tidak didefinisikan tetap tidak berubah. Bentuk matriks proyeksi ortografis sama dengan OpenGL, yaitu matriks dikalikan di sebelah kanan dengan koordinat homogen titik, bukan seperti Direct3D yang matriks dikalikan di sebelah kiri. Namun, data disusun secara row-major, berlawanan dengan column-major OpenGL. Definisi sistem koordinat klip dan sistem koordinat perangkat ternormalisasi sama dengan default OpenGL.
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
principalPoint()
Titik utama. Koordinat piksel dari titik persimpangan sumbu optik utama kamera pada bidang CCD ke sudut kiri atas gambar. Satuan piksel.
public virtual Vec2F principalPoint()
projection(float, float, float, int, bool, bool)
Menghitung matriks proyeksi perspektif yang diperlukan untuk merender objek virtual, mentransformasikan titik dari sistem koordinat kamera ke sistem koordinat klip ([-1, 1]^4) (termasuk rotasi di sekitar sumbu z). Bentuk matriks proyeksi perspektif sama dengan OpenGL, yaitu matriks dikalikan di sebelah kanan dengan vektor kolom koordinat homogen titik, bukan seperti Direct3D yang matriks dikalikan di sebelah kiri. Namun, data disusun secara row-major, berlawanan dengan column-major OpenGL. Definisi sistem koordinat klip dan sistem koordinat perangkat ternormalisasi sama dengan default OpenGL.
public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Parameter
nearPlanefarPlaneviewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
screenCoordinatesFromImageCoordinates(float, int, bool, bool, Vec2F)
Transformasi dari sistem koordinat gambar ([0, 1]^2) ke sistem koordinat layar ([0, 1]^2), kedua sistem koordinat memiliki x ke kanan, y ke bawah, asal di sudut kiri atas.
public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipimageCoordinates
size()
Ukuran gambar.
public virtual Vec2I size()
tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)
Membuat CameraParameters menggunakan parameter internal kamera kustom. Perlu menentukan parameter internal kamera (panjang fokus, titik utama, koefisien distorsi) serta model kamera. Model kamera yang didukung merujuk ke CameraModelType. Catatan: Gunakan antarmuka ini dengan hati-hati, kesalahan data input dapat menyebabkan gagal membuat objek, mengembalikan nilai kosong.
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraParamListcameraModelcameraDeviceTypecameraOrientation