Компенсация экспозиции OpenCV без необходимости сшивать изображения - PullRequest
2 голосов
/ 31 января 2020

У меня есть куча изображений с разной выдержкой, и я хочу сшить их вместе:

Grayscale Images Converted to JET colormapping for Illustration Purposes

В OpenCV есть пример сшивания, но он полагается на совпадение функций между изображениями, и они должны перекрываться друг с другом.

Мои изображения не перекрываются, НО они соединены друг с другом непрерывно (как будто я разделил Панораму на несколько разделений), и я хочу соединить их вместе и исправить их воздействия.

Как я могу сделать это в OpenCV Python? Как минимум класс Compensator нуждается в:

compensator.feed(corners=corners, images=images_warped, masks=masks_warped)

images_warped может быть просто нормальным вводом images и masks_warped может быть двумерным массивом единиц, но я не знаю, как corners значение должно быть задано вручную?

достаточно простого примера, спасибо.

Отдельные изображения

enter image description here enter image description here enter image description here

1 Ответ

0 голосов
/ 01 февраля 2020

Предполагая, что каждое из ваших изображений имеет одинаковые размеры, и поскольку изображения OpenCV имеют размер Numpy, мы можем использовать np.concatenate, np.hstack или cv2.hconcat.

import cv2
import numpy as np

# Load images
image1 = cv2.imread('1.png')
image2 = cv2.imread('2.png')
image3 = cv2.imread('3.png')

# Method #1
hstack = np.hstack((image1, image2, image3))

# Method #2
concatenate = np.concatenate((image1, image2, image3), axis=1)

# Method #3
hconcat = cv2.hconcat([image1, image2, image3])

cv2.imshow('hstack', hstack)
cv2.imshow('concatenate', concatenate)
cv2.imshow('hconcat', hconcat)
cv2.waitKey()

Результат должен быть таким же

enter image description here

...