Skip to content

Conversation

@goganizmrulit40
Copy link

ФИО: Ярославцев Максим
Номер группы: 6212
Номер лабораторной: 3
Номер варианта: 03
Краткое описание решаемой задачи: Согласно варианту 03 лабораторной 3 мне надо было научиться работать с openCV и matplotlib, построить гистограмму и состыковать два изображения
Краткое описание работы кода: Модуль main.py является точкой входа в приложение и выполняет основную работу программы . Чтобы его запустить, требуется указать аргументы командной строки: python main.py war40k.jpg output.jpg --second_image war40k_2.jpg
Работа по закрытию академической разницы.

Также скачаем изображение для работы с ним.
…ветствующую функцию, аргументы которой - это пути к входному и выходному изображениям
…обности и работоспособности, также пропишем обработку исключений в main
…м новую функцию по считыванию/загрузке изображения из файла по примеру из теории. Сразу пропишем докстринг к этой функции. Функция возвращает изображение как массив numpy в формате BGR, т.е. в двоичном представлении цветных изображений.
…ет кроме ширины и высоты изображения также количество каналов, что нам не нужно, следовательно, мы забираем оттуда только нужные нам параметры. Сразу пропишем докстринг.
… предыдущей функции. Для этого нам нужно проверить количество измерений массива. Их 3, т.е. изображение цветное.
… Помимо этого, воспользуемся функцией calcHist библиотеки openCV для вычисления гистограммы изображения. В параметры этой функции мы передаём изображение как массив numpy, массив цветов, без маски, кол-во бинов, т.е. кол-во раз, когда каждое значение пикселя будет встречаться. К примеру, если бы у нас было 2 бина, рассматривалось бы 2 массива [0, 128] и [128,256], для полного же масштаба изображения мы передаем 256 бинов. Также передадим диапазон значений интенсивности, какой он обычно есть. Затем образуем гистограмму с соответствующими настройками. Далее всё по примеру из теории.
…результата. В зависимости от количества каналов, выводим соответствующее изображение. Убираем оси координат, конвертируем в соответсвующий формат и принимаем как параметр функции, заголовок. Сразу пропишем докстринг к функции.
…ажениями. Добавим условие в функцию построения гистограммы, чтобы в случае передачи черно-белого изображения, гистограмма рисовалась именно такая. Но суть в том, что openCV принудительно конвертирует изображения в цветные (BGR), поэтому добавляем ещё один аргумент в парсинг аргументов командной строки, чтобы можно было принудительно конвертировать в черно-белый формат.
…енно состыковку двух изображений. Мы масштабируем второе изображение к высоте первого с сохранением пропорций. К примеру, 1 - 800x600, 2 - 600x400, scale_factor = 600 / 400 = 1.5, new_width = int(600 * 1.5) = 900, след-но, у получившегося изображения: 900x600, где сохраняется пропорция 3:2, сразу пропишем докстринг.
…шем маленькую дополнительную функцию, создающую зеркальное отражения исходного изображения при отсутствии второго изображения для состыковки, т.о. состыкуем изображение с его зеркальной копией. Мы зеркалим по вертикальной оси, но также можно: '0' - по горизонтали и '-1' - по обеим осям
…сохранения результата в файл. По примеру из теории, воспользуемся cv2.imwrite для сохранения изображения.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants