Я хочу автоматически сшивать сканы высокого разрешения с ~ 15 000 x 15 000 пикселей вместе.
Для этого я использую Python 3.7.6 с OpenCV 4.2.0 и кодом:
import os
import cv2
images = r"path_to_folder/Stitching/Bathy"
os.chdir(images)
images = []
for image in os.listdir():
image = cv2.imread(image)
print('Image Dimensions : ',image.shape)
images.append(image)
stitcher = cv2.Stitcher_create()
status, pano = stitcher.stitch(images)
if status == 0:
cv2.imshow("Pano", pano)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print("no success!")
В качестве примера я обрезал два изображения с высоким разрешением на два подкадра, которые можно найти здесь .
Батти в 14133 x 10783 и 12191 x 10775
Histori c в 6641 x 6081 и 5433 x 6025
Histori c загружаются изображения, для запуска требуется короткое время и отображается сшитое изображение. Загружаются батиметрические c изображения, но затем он сразу же возвращает статус 1 («нет успеха!»), Даже не пытаясь сшить изображения. Это, конечно, не из-за отсутствующего перекрытия или около того, поскольку, если я перемасштабирую Изображения, например, до 10% от размера, он работает:
for image in os.listdir():
image = cv2.imread(image)
print('Image Dimensions : ',image.shape)
scale_percent = 10
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
dim = (width, height)
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
print('Resized Dimensions : ',image.shape)
images.append(image)
Так что мой вопрос: как я могу сшить такие пять ди git Пиксельные изображения вместе, используя OpenCV?