Top.Mail.Ru

Шаги решения:
1. Импортируй модули NumPy и OpenCV:
“`python
import numpy as np
import cv2
“`
2. Загрузи изображение с помощью функции `cv2.imread()`:
“`python
image = cv2.imread(‘path_to_image.jpg’)
“`
3. Преобразуй изображение из формата BGR в RGB, если необходимо:
“`python
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
“`
4. Получи размеры изображения с помощью свойств `shape`:
“`python
height, width, channels = image.shape
“`
5. Создай новый массив размером `(height, width, 3)`, заполненный нулями, чтобы представить сжатое изображение:
“`python
compressed_image = np.zeros((height, width, 3), dtype=np.uint8)
“`
6. Пройдись по каждому пикселю с помощью циклов `for` и уменьши количество уровней цветов для каждого канала RGB. Например, для сжатия изображения до 32 уровней:
“`python
levels = 32
for i in range(height):
for j in range(width):
for k in range(3):
compressed_image[i, j, k] = (image[i, j, k] * (levels-1) // 255) * (255 // (levels-1))
“`
7. Если нужно, преобразуй обратно в формат BGR:
“`python
compressed_image = cv2.cvtColor(compressed_image, cv2.COLOR_RGB2BGR)
“`
8. Сохрани сжатое изображение с помощью функции `cv2.imwrite()`:
“`python
cv2.imwrite(‘compressed_image.jpg’, compressed_image)
“`

Теперь у тебя есть код для сжатия цветного изображения с помощью NumPy в Python.

   
[metform form_id="1136"]