create_camera_setup_model
— Anlegen eines HALCON-Kameraaufbaumodells.
create_camera_setup_model( : : NumCameras : CameraSetupModelID)
Der Operator create_camera_setup_model
erstellt ein neues
Kameraaufbaumodell und gibt seinen Handle in CameraSetupModelID
zurück. Die Anzahl von Kameras im Aufbau wird durch
den Parameter NumCameras
festgelegt und kann im Nachhinein
nicht mehr geändert werden. Das Modell speichert interne Parameter und
die Standardabweichungen der Parameter (optional) für jede Kamera, sowie
die Pose der Kamera.
Das Koordinatensystem, in dem die Kameraposen angegeben werden, kann mit
set_camera_setup_param
verändert werden: Entweder man wählt eine
Kamera, dann werden die Posen der anderen Kameras relativ zu der gewählten
Kamera angegeben. Oder man übergibt eine allgemeine Transformation und
verschiebt damit das Koordinatensystem des Aufbaus in eine beliebige
Lage. Letzteres ist insbesondere dann nützlich, wenn man die Kameras
beispielsweise im Koordinatensystem eines Objekts darstellen will, das von
den Kameras beobachtet wird (siehe auch das unten folgende Beispiel).
Die internen Kameraparameter und ihre Pose werden gesetzt, bzw. geändert
mit dem Operator set_camera_setup_cam_param
, weitere
Kameraparameter mit dem Operator set_camera_setup_param
.
Alle Kameraparameter können mit dem Operator
get_camera_setup_param
abgefragt werden.
Ein Kameraaufbaumodell kann mit dem Operator write_camera_setup_model
in eine Datei gespeichert werden. Im Nachhinein kann es mit dem Operator
read_camera_setup_model
wieder gelesen werden.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
NumCameras
(input_control) integer →
(integer)
Anzahl der Kameras im Kalibrieraufbau.
Defaultwert: 2
Wertevorschläge: 1, 2, 3, 4
Restriktion: NumCameras >= 1
CameraSetupModelID
(output_control) camera_setup_model →
(handle)
Handle des Kameraaufbaumodells.
* Create camera setup of three cameras. create_camera_setup_model (3, CameraSetupModelID) gen_cam_par_area_scan_division (0.006, 0, 8.3e-6, 8.3e-6,\ 512, 384, 1024, 768, StartCamPar) * Camera 0 is located in the origin. set_camera_setup_cam_param (CameraSetupModelID, 0, [], StartCamPar,\ [0, 0, 0, 0, 0, 0, 0]) * Camera 1 is shifted 0.07 m in positive x-direction relative to * camera 0. set_camera_setup_cam_param (CameraSetupModelID, 1, [], StartCamPar,\ [0.07, 0, 0, 0, 0, 0, 0]) * Camera 2 is shifted 0.1 m in negative y-direction relative to * camera 0. set_camera_setup_cam_param (CameraSetupModelID, 2, [], StartCamPar,\ [0.0, -0.1, 0, 0, 0, 0, 0]) * There is an object, which is 0.5 away from the origin in * z-direction, and is facing the origin. ObjectPose := [0, 0, 0.5, 180, 0, 0, 0] * Place the setup's origin in the object. set_camera_setup_param (CameraSetupModelID, 'general', 'coord_transf_pose',\ ObjectPose) * Now the camera poses are given relative to the object. get_camera_setup_param (CameraSetupModelID, 0, 'pose', CamPose0) * CamPose0 is equivalent to [0.0, 0.0, 0.5, 180.0, 0.0, 0.0, 0] get_camera_setup_param (CameraSetupModelID, 1, 'pose', CamPose1) * CamPose1 is equivalent to [0.07, 0.0, 0.5, 180.0, 0.0, 0.0, 0] get_camera_setup_param (CameraSetupModelID, 2, 'pose', CamPose2) * CamPose2 is equivalent to [0.0, 0.1, 0.5, 180.0, 0.0, 0.0, 0]
Calibration