Как вы можете «вырезать» контур изображения с помощью OpenCv? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть изображение A, изображение B и маска M, все с одинаковыми размерами.

Я хочу наложить изображение B на изображение A. Однако некоторые области на изображении A должны быть идентичными.Эти области уже были идентифицированы внутри маски, поэтому все, что нужно, это установить все соответствующие пиксели внутри изображения B, которые находятся внутри контуров маски, в прозрачные.

Другими словами, с помощью findContours в маске я знаю очертания областей, которые необходимо стереть с изображения B, но я не знаю внутренних точек.

Кто-нибудь знает, возможно ли сделать это выше?

РЕДАКТИРОВАТЬ: Использование cv: FILLED и drawContours, чтобы заполнить эти области одним цветом, а затем скопировать только пиксели с этими цветами.

1 Ответ

0 голосов
/ 04 февраля 2019

Это похоже на этот вопрос .С помощью этой функции вы можете получить результирующее изображение, если у вас есть двоичная маска:

def cmb(foreground,background,mask):
    result = np.zeros_like(foreground)
    result[mask] = foreground[mask]
    inv_mask = np.logical_not(mask)
    result[inv_mask] = background[inv_mask]
    return result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...