Изображения представляют собой многомерные массивы (матрицы) пикселей. Каждый пиксель содержит значение яркости, которое влияет на цвет изображения.
Основные компоненты:
- Размер - длина и ширина изображения, измеряется в количестве пикселей.
- Каналы - третье измерение после длины и ширины. Количество каналов влияет на цвет изображения. Цветные изображения обычно имеют 3 канала - красный, зелёный и синий (r, g, b), полутоновые и бинарные - один канал (значение яркости). Изображения с прозрачностью имеют 4 канала (r, g, b, a), где четвёртый канал отвечает за прозрачность.
- Пиксель - наименьшая неделимая единица изображения. Пиксель имеет яркость от 0 до 255 (uint) или от 0 до 1 (float). Пиксель может содержать от 1 до 4 значений в зависимости от количества каналов изображения. Например, пиксель зелёного цвета будет иметь значение (0, 255, 0).
Аудиофайлы представляют собой одномерные (моно) или двумерные (стерео) массивы, состоящие из сэмплов.
Основные компоненты:
- Размер - длина массива, количество сэмплов.
- Сэмпл - мгновенное значение амплитуды звуковой волны.
- Амплитуда - значение каждого сэмпла. Имеет значение от -1.0 до 1.0.
- Частота дискретизации - количество сэмпловв секунду, измеряется в герцах (Гц, Hz). Влияет на качество аудио. Стандартное качество CD - 44100 Hz.
- Длительность - размер, делённый на частоту дискретизации (получаем длину аудио в секундах).
NumPy - это библиотека для работы с многомерными массивами и матричными операциями. Обеспечивает высокую производительность за счет реализации на C/C++.
Установка:
pip install numpy
Ключевые возможности:
- N-мерные массивы (ndarray)
- Математические функции (линейная алгебра, преобразование Фурье)
- Инструменты для интеграции с C/C++
OpenCV — это открытая библиотека для компьютерного зрения и обработки изображений. Она была разработана для решения задач, связанных с обработкой и анализом изображений и видео.
Установка:
pip install opencv-python
Пример использования:
import cv2 # импорт
# Также возможен следующий вариант импорта:
# from cv2 import cv2
img = cv2.imread('image.jpg') # загрузка изображения
cv2.imshow('girl', img) # отображение
cv2.waitKey(0)
cv2.imwrite('image2.jpg', img) # сохранение изображенияПоскольку изображение представляет собой многомерный массив, то к нему могут быть применены операции из библиотеки numpy, например:
img[0, 0, :] = 255 # замена значения пикселя
shape = img.shape # получение размера
img2 = img.astype(np.uint8) # преобразование типовSoundFile — библиотека для чтения и записи аудиофайлов. Данные загружаются в формате массивов numpy.
Установка:
pip install soundfileПример использования:
import soundfile as sf
# Загрузка аудио
data, samplerate = sf.read('audio.mp3')
print(f"Массив сэмплов: {data}")
print(f"Частота дискретизации: {samplerate}")
# Сохранение аудио
sf.write('new_audio.mp3', data, samplerate)Matplotlib — это библиотека для визуализации данных в Python, которая позволяет создавать статические, анимационные и интерактивные графики.
Установка:
pip install matplotlib
Пример отображения изображения:
import matplotlib.pyplot as plt # импорт
plt.imshow(img) # загрузка изображения
plt.show() # отображениеПример построения графика синуса:
import matplotlib.pyplot as plt
import numpy as np
# создание данных
x = np.linspace(0, 10, 100) # 100 точек от 0 до 10
y = np.sin(x) # нахождение синуса
# создание графика
plt.figure(figsize=(10, 5)) # размер графика
plt.plot(x, y, label='sin(x)', color='blue') # линейный график синуса
plt.title('График синуса') # заголовок графика
plt.xlabel('x') # подпись оси x
plt.ylabel('sin(x)') # подпись оси y
plt.axhline(0, color='black',linewidth=0.5, ls='--') # линия по оси x
plt.axvline(0, color='black',linewidth=0.5, ls='--') # линия по оси y
plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5) # сетка
plt.legend() # легенда
# отображение графика
plt.show()- Используя данные из второй лабораторной работы, считать изображение или аудио из файла.
- Вывести размер изображения или аудио.
- Выполнить преобразование из вашего варианта над картинкой или аудиофайлом.
- Использовать matplotlib для демонстрации исходного изображения или аудио и результата.
- Сохранить результат в новый файл.
Путь к исходному файлу, путь для сохранения, параметры по варианту (если есть) необходимо передавать через аргументы командной строки.
-
Обрежьте изображения до заданных размеров, начиная от левого верхнего угла.
-
Измените размер изображения на заданный.
-
Соедините (состыкуйте) два изображения.
-
Поверните изображение на заданный угол.
-
Инвертируйте цвета в изображении.
-
Сделайте изображение полутоновым.
-
Сделайте изображение бинарным.
-
Поменяйте местами каналы изображения.
-
Отразите изображение.
-
Наложите одно изображение на другое, сделав накладываемое полупрозрачным.
-
Сделайте из изображения паззл (разделите на n равных частей и заново сложите случайным образом в изображение такого же размера).
-
Наложите на изображение белый шум.
-
Наложите на изображение рамку (нарисовать самостоятельно или использовать изображение).
-
Сделайте изображение круглым (область вне круга должна быть чёрной, белой или прозрачной).
-
Добавьте эффект градиента (изображение с одной из сторон постепенно становится светлее).
-
Преобразуйте изображение в пиксель-арт (размер изображения сохранить).
-
Уменьшите амплитуду сэмплов аудиофайла на заданную величину.
-
Увеличьте амплитуду сэмплов аудиофайла на заданную величину.
-
Обрежьте длину аудио в заданном диапазоне.
-
Склейте два аудиофайла.
-
Переверните аудио задом наперед.
-
Сделайте фильтр тишины (удалите участки тише заданного порога).
-
Смешайте два аудиофайла.
-
Сделайте эхо-эффект (с помощью наложения с задержкой).
-
Увеличьте скорость аудиофайла в заданное количество раз.
-
Уменьшите скорость аудиофайла в заданное количество раз.
-
Добавьте в аудио белый шум.
-
Уменьшите амплитуду выше заданной до порогового значения.
-
Сделайте сглаживание (усреднение значений) аудио с помощью numpy.convolve.
-
Усильте высокие частоты (чтобы выделить высокие частоты, необходимо из обычной версии аудио вычесть сглаженную).