Class CameraParameters
- Namespace
- easyar
- Assembly
- EasyAR.Sense.dll
Kameraparameter, einschließlich Bildgröße, Brennweite, Hauptpunkt, Kameratyp und Rotationswinkel der Kamera relativ zur natürlichen Geräteausrichtung.
public class CameraParameters : RefBase, IDisposable
- Vererbung
-
CameraParameters
- Implementiert
- Geerbte Mitglieder
Konstruktoren
CameraParameters(Vec2I, Vec2F, Vec2F, CameraDeviceType, int)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizefocalLengthprincipalPointcameraDeviceTypecameraOrientation
Methoden
Clone()
public CameraParameters Clone()
CloneObject()
protected override object CloneObject()
cameraDeviceType()
Kameragerätetyp. Standardkamera, Rückkamera oder Frontkamera. Desktop-Geräte verwenden stets die Standardkamera, Mobilgeräte unterscheiden zwischen Rück- und Frontkamera.
public virtual CameraDeviceType cameraDeviceType()
cameraModelType()
Kameramodell.
public virtual CameraModelType cameraModelType()
cameraOrientation()
Der Winkel, um den das Kamerabild im Uhrzeigersinn gedreht werden muss, um in der natürlichen Ausrichtung des Geräts angezeigt zu werden. Bereich: [0, 360). Android-Telefone und einige Android-Tablets: 90 Grad. Android-Brillen und einige Android-Tablets: 0 Grad. Bestehende iOS-Geräte: 90 Grad.
public virtual int cameraOrientation()
createWithDefaultIntrinsics(Vec2I, CameraDeviceType, int)
Erstellt CameraParameters mit Standard-Kameraintrinsik. Die Standard-Kameraintrinsik (Brennweite, Hauptpunkt) wird automatisch basierend auf der Bildgröße berechnet, ist jedoch nicht besonders genau.
public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraDeviceTypecameraOrientation
equalsTo(CameraParameters)
Bestimmt, ob zwei Parametersätze gleich sind.
public virtual bool equalsTo(CameraParameters other)
Parameter
other
focalLength()
Brennweite. Die Entfernung vom äquivalenten optischen Zentrum der Kamera zur CCD-Ebene geteilt durch die Pixeldichte pro Einheit in Breite und Höhe. Einheit: Pixel.
public virtual Vec2F focalLength()
getResized(Vec2I)
Ruft die äquivalenten CameraParameters nach Änderung der Kamerabildgröße ab.
public virtual CameraParameters getResized(Vec2I imageSize)
Parameter
imageSize
imageCoordinatesFromScreenCoordinates(float, int, bool, bool, Vec2F)
Transformation vom Bildschirmkoordinatensystem ([0, 1]^2) in das Bildkoordinatensystem ([0, 1]^2). Beide Koordinatensysteme haben x nach rechts, y nach unten, Ursprung oben links.
public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipscreenCoordinates
imageHorizontalFlip(bool)
Berechnet, ob das Bild horizontal gespiegelt werden muss. Beim Rendern des Bildes erfolgt zuerst die Rotation, dann die Spiegelung. Wenn cameraDeviceType eine Frontkamera ist, wird automatisch gespiegelt; darauf aufbauend kann durch Übergabe von manualHorizontalFlip eine manuelle Spiegelung zusätzlich angewendet werden.
public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)
Parameter
manualHorizontalFlip
imageOrientation(int)
Berechnet den Winkel, um den das Bild im Uhrzeigersinn relativ zum Bildschirm gedreht werden muss, um an diesem ausgerichtet zu sein. screenRotation ist der Winkel, um den das Bildschirmbild relativ zur natürlichen Ausrichtung im Uhrzeigersinn gedreht ist. Für iOS: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Für 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)
Berechnet die orthografische Projektionsmatrix für das Rendern des Kamerahintergrundbildes. Sie transformiert Punkte vom Bildrechteck-Koordinatensystem ([-1, 1]^2) in das Clip-Koordinatensystem ([-1, 1]^4) (einschließlich Rotation um die z-Achse); die beiden nicht definierten Dimensionen bleiben unverändert. Die Form der orthografischen Projektionsmatrix entspricht OpenGL: Matrix rechts multipliziert mit dem homogenen Koordinatenspaltenvektor des Punkts, nicht wie bei Direct3D (Matrix links multipliziert). Die Datenanordnung ist jedoch row-major, im Gegensatz zu OpenGLs column-major. Die Definition von Clip-Koordinatensystem und normalisiertem Gerätekoordinatensystem entspricht standardmäßig OpenGL.
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlip
principalPoint()
Hauptpunkt. Die Pixelkoordinaten des Schnittpunkts der optischen Hauptachse der Kamera mit der CCD-Ebene relativ zur oberen linken Ecke des Bildes. Einheit: Pixel.
public virtual Vec2F principalPoint()
projection(float, float, float, int, bool, bool)
Berechnet die perspektivische Projektionsmatrix für das Rendern virtueller Objekte. Sie transformiert Punkte vom Kamerakoordinatensystem in das Clip-Koordinatensystem ([-1, 1]^4) (einschließlich Rotation um die z-Achse). Die Form der perspektivischen Projektionsmatrix entspricht OpenGL: Matrix rechts multipliziert mit dem homogenen Koordinatenspaltenvektor des Punkts, nicht wie bei Direct3D (Matrix links multipliziert). Die Datenanordnung ist jedoch row-major, im Gegensatz zu OpenGLs column-major. Die Definition von Clip-Koordinatensystem und normalisiertem Gerätekoordinatensystem entspricht standardmäßig 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)
Transformation vom Bildkoordinatensystem ([0, 1]^2) in das Bildschirmkoordinatensystem ([0, 1]^2). Beide Koordinatensysteme haben x nach rechts, y nach unten, Ursprung oben links.
public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
Parameter
viewportAspectRatioscreenRotationcombiningFlipmanualHorizontalFlipimageCoordinates
size()
Bildgröße.
public virtual Vec2I size()
tryCreateWithCustomIntrinsics(Vec2I, List<float>, CameraModelType, CameraDeviceType, int)
Erstellt CameraParameters mit benutzerdefinierten Kameraintrinsik. Die Kameraintrinsik (Brennweite, Hauptpunkt, Verzeichnungskoeffizienten) sowie das Kameramodell müssen angegeben werden. Unterstützte Kameramodelle siehe CameraModelType. Hinweis: Verwenden Sie diese Schnittstelle mit Vorsicht; falsche Eingabedaten können zu einem fehlgeschlagenen Objekterstellung führen, der Rückgabewert ist null.
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
Parameter
imageSizecameraParamListcameraModelcameraDeviceTypecameraOrientation