OpenCV Python - размещение одного изображения поверх другого - PullRequest
0 голосов
/ 31 марта 2020

Я строю решатель Судоку в реальном времени.

Я пытаюсь разместить это изображение (деформацию):

enter image description here

Вверху этого изображения (оригинал):

enter image description here

Чтобы сделать его таким (результат):

enter image description here

Вот что я получил до сих пор:

for i in range(original.shape[0]): # original and warp have the same size
    for j in range(original.shape[1]): 
        if numpy.sum(warp[i][j]) != 0: # If warp at (i,j) is not totally black
            original[i][j][0] = warp[i][j][0] # Replace original[i][j] with warp[i][j]
            original[i][j][1] = warp[i][j][1]
            original[i][j][2] = warp[i][j][2]

result = original

Код работает, но он очень медленный . Кто-нибудь может предложить лучший подход с использованием opencv и python?

Спасибо!

1 Ответ

1 голос
/ 31 марта 2020

Как насчет этого?

result = np.where(warp.sum(axis=-1,keepdims=True)!=0, warp, original)

.sum(axis=-1,keepdims=True) сумм по последней оси, при этом сохраняя последнюю ось (необходимую для последующего вещания), это эффективно создает маску для не черных пикселей. np.where затем использует эту маску для использования warp, когда маска true или original в противном случае.

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