---
title: Importing Custom Calibrations
description: Learn how to format and import OpenCV-compatible YAML files for Move Pro. This guide covers camera intrinsics (K), extrinsics (RT), and naming conventions for seamless Genesis integration.
---

[Skip to content](https://docs.move.ai/knowledge/genesis-importing-custom-calibrations#main-content)

![Move New Logo 2021-May-19-2025-01-26-31-8785-PM](https://docs.move.ai/hs-fs/hubfs/Move%20New%20Logo%202021-May-19-2025-01-26-31-8785-PM.jpeg?width=45&height=45&name=Move%20New%20Logo%202021-May-19-2025-01-26-31-8785-PM.jpeg)

Open main navigation

Close main navigation

- [Move](https://www.move.ai/)

[Move](https://www.move.ai/)

 Welcome to the Move Knowledge Base

- There are no suggestions because the search field is empty.

1. [Move Docs](https://docs.move.ai/knowledge?hsLang=en)
2. [Genesis](https://docs.move.ai/knowledge/genesis?hsLang=en)
3. [Optimising your System](https://docs.move.ai/knowledge/genesis?hsLang=en#optimising-your-system)

# Importing Custom Calibrations

This guide explains **how to provide camera intrinsics and extrinsics** in the **OpenCV-compatible YAML format** used by Genesis.

### **Import Structure (Required)**

When importing calibration data, you must provide a **folder** containing **one YAML file per camera**.

### Rules

- The import must be a **directory**, not a single file
- Each camera must have **exactly one YAML file**
- The **file name must match the camera ID**
- The file extension must be `.yaml`

### Naming Convention

Use the camera’s unique identifier as the file name:

- `cam01.yaml`
- `cam02.yaml`
- `cam03.yaml`
- …

---

### YAML File Structure

Your final YAML should use the below template:

[Template.yaml](https://docs.move.ai/hubfs/Template.yaml?hsLang=en)

```
%YAML:1.0---#Optional for custom camera profiles:name: "Unique_name"#----------------------------------------#Essential for both Camera Profile & Calibration import:K: !!opencv-matrix #Do not change  rows: 3 #Do not change  cols: 3 #Do not change  dt: d #Do not change	data: [ fx, 0., cx, 0., fy, cy, 0., 0., 1. ] #Float valuesImgSizeWH: !!opencv-matrix #Do not change  rows: 2 #Do not change  cols: 1 #Do not change  dt: d #Do not change  data: [ width, height ] #Float values        #----------------------------------------#Essential for calibration import only:RT: !!opencv-matrix #Do not change  rows: 3 #Do not change  cols: 4 #Do not change  dt: d #Do not change  data: [ r11, r12, r13, tx,r21, r22, r23, ty, r31, r32, r33, tz ] #Float values  CaptureAreaMode: CIRCLE  #Do not changeCaptureAreaCircleRadius: 2. #Float valueCaptureAreaCircleNumPoints: 5 #Integer value
```

### Breakdown of the file

#### 1. Camera Intrinsics (K)

#### What this represents

The **intrinsics matrix** explains how 3D points project onto the image plane.

```
K: !!opencv-matrix #Do not change  rows: 3 #Do not change  cols: 3 #Do not change  dt: d #Do not change	data: [ fx, 0., cx, 0., fy, cy, 0., 0., 1. ] #Float values
```

- **fx, fy** – focal lengths in pixels
- **cx, cy** – principal point coordinates (optical center)

Make sure the values are:

- In **pixels**
- From the **image resolution** used in your captures

#### Example

```
K: !!opencv-matrix  rows: 3  cols: 3  dt: d  data: [ 922.09277084981841, 0., 682.16835173079346, 0., 921.5827891782551, 548.02654115852147, 0., 0., 1. ]
```

---

### 2. Image Size (ImgSizeWH)

#### What this represents

The image resolution used during calibration and action takes.

- **Width**
- **Height**

**Important**: The image size must exactly match the resolution used to compute **K**.

```
ImgSizeWH: !!opencv-matrix #Do not change  rows: 2 #Do not change  cols: 1 #Do not change  dt: d #Do not change  data: [ width, height ] #Float values
```

#### Example

```
ImgSizeWH: !!opencv-matrix  rows: 2  cols: 1  dt: d  data: [ 1440., 1080. ]
```

---

### 3. Camera Extrinsics (RT)

#### What this represents

The **RT matrix** describes the camera pose relative to the world or reference coordinate system in OpenCV’s required serialisation format.

Where:

- **R** – 3×3 rotation matrix
- **t** – 3×1 translation vector

Make sure that:

- Units of translation are **consistent** (meters)
- The coordinate system is **right-handed**

#### YAML format (required)

```
#Essential for calibration import only:RT: !!opencv-matrix #Do not change  rows: 3 #Do not change  cols: 4 #Do not change  dt: d #Do not change  data: [ r11, r12, r13, tx,r21, r22, r23, ty, r31, r32, r33, tz ] #Float values
```

#### Example

```
RT: !!opencv-matrix  rows: 3  cols: 4  dt: d  data: [ 0.78138963988988874,  0.62104908703997874,  0.061059496882623292, -0.36872944270732294, 0.38504025270882253, -0.40281113554509701, -0.83035365530284488,  0.2007447798572404, -0.49109493427103923,  0.67234010780830156, -0.55388134556567736,  4.5193588423681952 ]
```

---

### 4. Capture Area Configuration

This section defines the **spatial capture area** used by the system. It must be included **as-is**, with the values adjusted only where noted below.

#### Parameters

- **`CaptureAreaMode` must remain `CIRCLE`** (do not change this value)
- **CaptureAreaCircleRadius -** The radius of the capture area in **meters**.
- **CaptureAreaCircleNumPoints -** The number of points (polygon sides) used to approximate the circular capture area.

```
CaptureAreaMode: CIRCLE  #Do not changeCaptureAreaCircleRadius: 2. #Decimal valueCaptureAreaCircleNumPoints: 5 #Integer value
```

**Do not rename or restructure these fields.** Only adjust the numeric values if required for your setup.

---

### 5. Importing into Genesis

1. Create a New Project
2. Click on `Camera Manager`
3. Click `Import Extrinsic Calibration from Directory`
4. Find the YAML files for each camera's extrinsics. 
     1. **Note:** All files must be stored in the same directory to work correctly
5. Click `Open` followed by `Save`

 

Follow the tutorial below for a step-by-step demonstration of this workflow.

<iframe data-hsv-src="https://play-eu1.hubspotvideo.com/v/26134430/id/386028541146" referrerpolicy="origin" sandbox="allow-forms allow-scripts allow-same-origin allow-popups" allow="autoplay; fullscreen;" style="position: absolute !important; width: 100% !important; height: 100% !important; left: 0; top: 0; border: 0 none; pointer-events: initial" title="HubSpot Video" loading="lazy" data-hsv-id="386028541146" data-hsv-style="" data-hsv-width="3076" data-hsv-height="1982" data-hsv-autoplay="false" data-hsv-loop="false" data-hsv-muted="false" data-hsv-hidden-controls="false" data-hsv-full-width="false"></iframe>

- [Genesis](https://docs.move.ai/knowledge/genesis?hsLang=en#main-content)

    - [Overview](https://docs.move.ai/knowledge/genesis?hsLang=en#overview)
    - [System Prep & Setup](https://docs.move.ai/knowledge/genesis?hsLang=en#system-prep-setup)
    - [Genesis Live](https://docs.move.ai/knowledge/genesis?hsLang=en#genesis-live)
    - [Genesis Post](https://docs.move.ai/knowledge/genesis?hsLang=en#genesis-post)
    - [Output Data](https://docs.move.ai/knowledge/genesis?hsLang=en#output-data)
    - [Optimising your System](https://docs.move.ai/knowledge/genesis?hsLang=en#optimising-your-system)
    - [System Management](https://docs.move.ai/knowledge/genesis?hsLang=en#system-management)
    - [Release Notes](https://docs.move.ai/knowledge/genesis?hsLang=en#release-notes)
- [Move One](https://docs.move.ai/knowledge/move-one?hsLang=en#main-content)

    - [Move One Pricing](https://docs.move.ai/knowledge/move-one?hsLang=en#move-one-pricing)
    - [Move Platform](https://docs.move.ai/knowledge/move-one?hsLang=en#move-platform)
    - [Move One iOS App](https://docs.move.ai/knowledge/move-one?hsLang=en#move-one-ios-app)
    - [Using your Animations](https://docs.move.ai/knowledge/move-one?hsLang=en#using-your-animations)
    - [Legacy Accounts - App Store Billing](https://docs.move.ai/knowledge/move-one?hsLang=en#legacy-accounts-app-store-billing)
- [Troubleshooting](https://docs.move.ai/knowledge/troubleshooting?hsLang=en#main-content)

    - [Z-Cams](https://docs.move.ai/knowledge/troubleshooting?hsLang=en#z-cams)
    - [Genesis](https://docs.move.ai/knowledge/troubleshooting?hsLang=en#genesis)

[![Chill listening crop-3](https://docs.move.ai/hs-fs/hubfs/1627650260615-1.jpg?width=24&height=24&name=1627650260615-1.jpg "Chill listening crop-3")](http://move.ai)

www.move.ai

<https://www.linkedin.com/company/move-ai/> <https://twitter.com/Moveai_> <https://www.instagram.com/move_ai_/> <https://www.youtube.com/@moveai/featured>

Copyright © 2026, Move AI

```json
{
  "@context" : "https://schema.org",
  "@type" : "VideoObject",
  "contentUrl" : "https://26134430.fs1.hubspotusercontent-eu1.net/hubfs/26134430/video_assets/386050875591/inherited/web_optimized.mp4",
  "dateModified" : "2026-03-31T10:55:13.162Z",
  "duration" : "PT24S",
  "height" : 1982,
  "name" : "Screen Recording 2026-02-27 at 14.30.40 (1)",
  "thumbnailUrl" : "https://26134430.fs1.hubspotusercontent-eu1.net/hubfs/26134430/Screen%20Recording%202026-02-27%20at%2014.30.40%20(1).mov/medium.jpg",
  "uploadDate" : "2026-03-31T10:49:29.149Z",
  "width" : 3076
}
```