Как собрать видео из массива массивов numpy?

Как можно переделать функцию convert_arrays_to_video(array_list: List[np.array]) для преобразования списка np.array в видео и получения на выходе bytes? Какой тип данных следует использовать в imageio.imread() вместо array для успешного выполнения операции append_data?
  • 26 марта 2024 г. 18:09
Ответы на вопрос 1
Для сборки видео из массива массивов numpy можно использовать библиотеку imageio. 

Для преобразования списка np.array в видео и получения на выходе bytes можно переделать функцию convert_arrays_to_video следующим образом:

```python
import numpy as np
from typing import List
import imageio

def convert_arrays_to_video(array_list: List[np.array]) -> bytes:
    output = b''
    
    with imageio.get_writer('output_video.mp4', fps=30) as writer:
        for array in array_list:
            writer.append_data(array.astype(np.uint8))
    
    with open('output_video.mp4', 'rb') as video_file:
        output = video_file.read()
    
    return output
```

Таким образом, в функции используется метод `astype(np.uint8)` для преобразования массива numpy в тип данных uint8, который является подходящим форматом для использования в `imageio.append_data()`. После записи видео в файл "output_video.mp4", его содержимое считывается в виде байтового объекта и возвращается из функции.

Теперь функция convert_arrays_to_video будет успешно преобразовывать список np.array в видео и возвращать его содержимое в виде bytes.
Похожие вопросы