es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir una secuencia de imágenes RGB y archivos de profundidad al formato de archivo mkv.

Tengo una secuencia de archivos png y archivos de profundidad correspondientes (alineados con las imágenes correspondientes) de una cámara externa.

RGB:
1.png
2.png
3.png
etc
150.png

Profundidad:
1.txt
2.txt
3.txt
etc
150.txt

También tengo la información intrínseca y de la cámara correspondiente en otro archivo llamado camera.txt.

Mi objetivo es convertir estas imágenes y archivos de profundidad en un archivo mkv para utilizar el rastreador de cuerpos de pyKinect (https://github.com/ibaiGorordo/pyKinectAzure).

Hasta ahora, he logrado convertir las imágenes y los archivos de profundidad en un objeto RGBD de open3D. Ver: http://www.open3d.org/docs/release/python_api/open3d.geometry.RGBDImage.html

Creería que necesitamos ejecutarlo a través del lector de Azure Kinect (https://github.com/isl-org/Open3D/blob/0ec3e5b24551eaffa3c7708aae8630fde9b00e6c/examples/python/reconstructionsystem/sensors/azurekinect_recorder.py#L34), pero esto parece abrir la cámara para una entrada adicional.

¿Cómo puedo guardar estas imágenes RGBD en formato de archivo mkv para leerlas en el lector de pyKinect?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sigue estos pasos para guardar el objeto RGBD en un archivo mkv:

    1. Crea una instancia de la clase AzureKinectRecorder de la biblioteca Open3D.
    2. Establece el nombre del archivo de salida y el intervalo de tiempo entre los cuadros.
    3. Comienza la grabación pasando el objeto RGBD al método write_frame de AzureKinectRecorder hasta que se graben todos los cuadros.
    4. Libera el objeto AzureKinectRecorder y cierra el archivo de salida.

    Aquí tienes algo de código para comenzar:

    import open3d as o3d
    
    RGBD = o3d.geometry.RGBDImage.create_from_color_and_depth(
        o3d.io.read_image("1.png"), o3d.io.read_image("1.txt"))
    
    recorder = o3d.t.io.AzureKinectRecorder()
    recorder.open("output.mkv")
    
    intervalo_cuadro = 1 / 30  # 30 fps
    marca_de_tiempo = 0
    while True:
        recorder.write_frame(marca_de_tiempo, RGBD)
        marca_de_tiempo += intervalo_cuadro
        # Carga el siguiente cuadro o sale del bucle si es el último cuadro
        # RGBD = o3d.geometry.RGBDImage.create_from_color_and_depth(...)
        if ultimo_cuadro:
            break
    
    recorder.close()
    

    Después de ejecutar este código, debería generar un archivo output.mkv que luego puedes usar con el body tracker de la biblioteca pyKinectAzure.

Comments are closed.