Bagikan melalui


Mengambil data gambar Azure Kinect

Halaman ini menyediakan detail tentang cara mengambil gambar dari Azure Kinect. Artikel ini menunjukkan cara mengambil dan mengakses gambar yang dikoordinasikan antara warna dan kedalaman perangkat. Untuk mengakses gambar, Anda harus terlebih dahulu membuka dan mengonfigurasi perangkat, lalu Anda dapat mengambil gambar. Sebelum mengonfigurasi dan mengambil gambar, Anda harus Menemukan dan membuka perangkat.

Anda juga dapat merujuk ke Contoh Streaming SDK yang menunjukkan cara menggunakan fungsi-fungsi dalam artikel ini.

Fungsi-fungsi tersebut meliputi:

Mengonfigurasi dan memulai perangkat

Dua kamera yang tersedia di perangkat Kinect Anda mendukung beberapa mode, resolusi, dan format output. Untuk daftar lengkap, lihat spesifikasi perangkat keras Azure Kinect Development Kit.

Konfigurasi streaming diatur menggunakan nilai dalam struktur k4a_device_configuration_t.

k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;

if (K4A_RESULT_SUCCEEDED != k4a_device_start_cameras(device, &config))
{
    printf("Failed to start device\n");
    goto Exit;
}

Setelah kamera dimulai, kamera akan terus mengambil data hingga k4a_device_stop_cameras() dipanggil atau perangkat ditutup.

Stabilisasi

Saat memulai perangkat menggunakan fitur sinkronisasi multi perangkat, sangat disarankan untuk melakukannya menggunakan pengaturan pencahayaan tetap. Dengan kumpulan pencahayaan manual, dibutuhkan hingga delapan tangkapan dari perangkat sebelum gambar dan framerate stabil. Dengan pencahayaan otomatis, dibutuhkan hingga 20 tangkapan sebelum gambar dan framerate stabil.

Mendapatkan tangkapan dari perangkat

Gambar diambil dari perangkat dengan cara yang berkorelasi. Setiap gambar yang diambil berisi gambar kedalaman, gambar IR, gambar warna, atau kombinasi gambar.

Secara default, API hanya akan mengembalikan tangkapan setelah menerima semua gambar yang diminta untuk mode streaming. Anda dapat mengonfigurasi API untuk mengembalikan tangkapan parsial hanya dengan gambar kedalaman atau warna segera setelah tersedia dengan menghapus parameter synchronized_images_only dari k4a_device_configuration_t.

// Capture a depth frame
k4a_capture_t capture = NULL;
switch (k4a_device_get_capture(device, &capture, TIMEOUT_IN_MS))
{
case K4A_WAIT_RESULT_SUCCEEDED:
    break;
case K4A_WAIT_RESULT_TIMEOUT:
    printf("Timed out waiting for a capture\n");
    continue;
    break;
case K4A_WAIT_RESULT_FAILED:
    printf("Failed to read a capture\n");
    goto Exit;
}

Setelah API berhasil mengembalikan tangkapan, Anda harus memanggil k4a_capture_release() setelah selesai menggunakan objek penangkapan.

Mendapatkan gambar dari tangkapan

Untuk mengambil gambar yang ditangkap, panggil fungsi yang sesuai untuk setiap jenis gambar. Salah satu:

Anda harus memanggil k4a_image_release() pada handel k4a_image_t apa pun yang dikembalikan oleh fungsi-fungsi ini setelah selesai menggunakan gambar.

Mengakses buffer gambar

k4a_image_t memiliki banyak fungsi aksesor untuk mendapatkan properti gambar.

Untuk mengakses buffer memori gambar, gunakan k4a_image_get_buffer.

Contoh berikut menunjukkan cara mengakses gambar kedalaman yang ditangkap. Prinsip yang sama ini berlaku untuk jenis gambar lainnya. Namun, pastikan Anda mengganti variabel jenis gambar dengan jenis gambar yang benar, seperti IR atau warna.

// Access the depth16 image
k4a_image_t image = k4a_capture_get_depth_image(capture);
if (image != NULL)
{
    printf(" | Depth16 res:%4dx%4d stride:%5d\n",
            k4a_image_get_height_pixels(image),
            k4a_image_get_width_pixels(image),
            k4a_image_get_stride_bytes(image));

    // Release the image
    k4a_image_release(image);
}

// Release the capture
k4a_capture_release(capture);

Langkah berikutnya

Sekarang Anda tahu cara mengambil dan mengoordinasikan gambar kamera antara warna dan kedalaman menggunakan perangkat Azure Kinect Anda. Anda juga dapat: