Здравствуйте! Чтобы сохранить маски, полученные с помощью контуров из OpenCV, в формате NPZ и минимизировать использование оперативной памяти, вы можете использовать библиотеку NumPy для создания массивов масок и сохранения их в файл NPZ.
Вот как это можно сделать:
1. Сначала создайте маски для каждого изображения с контурами и добавьте их в список.
2. Далее, преобразуйте список масок в массив NumPy.
3. Затем сохраните этот массив в формате NPZ.
Вот пример кода, который демонстрирует этот процесс:
```python
import cv2
import numpy as np
# Пример: список изображений и их размеров
image_files = ['image1.png', 'image2.png', 'image3.png']
combined_image_height, combined_image_width = 1000, 1000 # Предположим, размеры ваших изображений
fin_mask = [] # Список для хранения масок
for image_file in image_files:
# Загрузите изображение
image = cv2.imread(image_file)
# Обработка изображения и получение контуров
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Создайте пустую маску для текущего изображения
mask = np.zeros((combined_image_height, combined_image_width), dtype=np.uint8)
# Нарисуйте контуры на маске
cv2.drawContours(mask, contours, -1, (255), thickness=cv2.FILLED)
# Добавьте маску в список
fin_mask.append(mask)
# Преобразуйте список масок в массив NumPy
fin_mask_array = np.array(fin_mask)
# Сохраните маски в формате NPZ
np.savez_compressed('masks.npz', masks=fin_mask_array)
print("Маски успешно сохранены в файл masks.npz.")
```
### Пояснение кода:
1. **Загрузка и обработка изображений**: Изображения загружаются с помощью `cv2.imread`, после чего получаются контуры.
2. **Создание масок**: Для каждого изображения создается пустая маска и на нее рисуются контуры.
3. **Сохранение**: Все маски объединяются в массив NumPy и сохраняются в файл формата NPZ, используя `np.savez_compressed`, что позволяет сжать данные и сэкономить место.
Таким образом, вы получите один файл `masks.npz`, содержащий все ваши маски, и минимизируете использование оперативной памяти.