WedX - журнал о программировании и компьютерных науках

Как соединить два альфа-изображения по горизонтали и по вертикали?

Я создал изображения прямоугольных треугольников, используя альфа-маски. Я хотел бы соединить их по вертикали и по горизонтали. Маски: альфа-маска для прямоугольных треугольников

Еще одна альфа-маска для прямоугольных треугольников

Нарезанные изображения: Прямоугольные треугольники с использованием первой альфа-маски

Прямоугольные треугольники с использованием второй альфа-маски

Я хотел бы объединить два прямоугольных треугольника следующими способами:

Желаемый результат

Однако у меня был неверный вывод: Неверный вывод

Я хотел бы получить некоторые рекомендации о том, как подойти к этой проблеме, чтобы я мог получить желаемые результаты.

Код для соединения треугольников: я использовал следующий пример: Маскирование двух изображений и объединить в одно изображение

def mirror_triangles_one():
  x=first_array[0] #The first array contains right angle triangles sliced using alpha mask one
  y=second_array[2] #The second array contains right angle triangles sliced using alpha mask two
  x_im=x
  x_im.paste(y, (-4, 0), y)
  x_im.save('mirror_five.png')
  return x_im

Исходное изображение — Исходное изображение


  • Разместите соответствующие два изображения как отдельные изображения. Маскируйте каждую белой краской, чтобы заполнить прямоугольник. Затем просто добавьте горизонтально, используя np.hstack. 16.03.2021
  • Что вы имеете в виду под маскировкой каждого белым цветом, чтобы заполнить прямоугольник. Я разделил изображение на квадраты, а затем применил маску, чтобы получить изображения прямоугольного треугольника. 16.03.2021
  • Я просто имею в виду, убедитесь, что другая половина прямоугольника с изображением треугольника белого цвета или любого другого цвета, который вы хотите. Я не показывал, как вы перешли от входного изображения к изображению треугольника, используя свои маски. 16.03.2021
  • Я использовал функцию put alpha, поэтому, когда маска применяется к изображению, она показывает треугольник. 16.03.2021
  • Я предлагаю обрезать изображение, создать белое изображение, а затем выполнить альфа-функцию, чтобы другая сторона треугольника была белой. Затем просто сложите два изображения. 16.03.2021

Ответы:


1

Вот как я бы сделал это в Python/OpenCV/Numpy. Но мне пришлось обрезать ваши изображения, поэтому результаты будут неточными. Предполагая, что вы заполнили треугольные изображения прямоугольниками белого цвета, один из них просто складывает два изображения. Обратите внимание, что они должны иметь одинаковую высоту.

Оставил:

введите здесь описание изображения

Верно:

введите здесь описание изображения

import cv2
import numpy as np

# read right image
right = cv2.imread('right.png')
rhh, rww = right.shape[:2]

# read left image
left = cv2.imread('left.png')
lhh, lww = left.shape[:2]

# compute min height and crop images to same height
minh = min(rhh,lhh)
right = right[0:minh, 0:rww]
left = left[0:minh, 0:lww]

# stack horizontally
result = np.hstack([left,right])

# save result
cv2.imwrite('left_right_result.jpg', result)

# display result
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Результат:

введите здесь описание изображения

16.03.2021
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]