OpenCV 4.2.0: как сшивать изображения с> 10.000 пикселей? - PullRequest
0 голосов
/ 16 марта 2020

Я хочу автоматически сшивать сканы высокого разрешения с ~ 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!")

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

  1. Батти в 14133 x 10783 и 12191 x 10775

  2. 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?

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