Снять ограничение размера изображения OpenCV - PullRequest
3 голосов
/ 01 апреля 2020

Я загружаю очень большое изображение (60 000 x 80 000 пикселей) и превышаю максимальное количество пикселей, которое могу загрузить:

cv2.error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv-python/opencv/modules/imgcodecs/src/loadsave.cpp:75: 
    error: (-215:Assertion failed) pixels <= CV_IO_MAX_IMAGE_PIXELS in function 'validateInputImageSize'

Из того, что я обнаружил, это относится к ограничению, наложенному на строка 65

В идеале я бы изменил это, чтобы иметь дело как минимум с 5-гигапиксельными изображениями

#define CV_IO_MAX_IMAGE_PIXELS (1<<33)

Я нашел некоторые обходные пути для этого ( Размер изображения OpenCV limit ) но, похоже, они не решают проблему, которая является произвольным определением (я работаю на высокопроизводительном сервере с оперативной памятью 700 ГБ, поэтому вычисление не является проблемой).

Моя проблема заключается в том, что Понятия не имею, где находится этот файл . Ошибка указывает мне на этот каталог "travis", который не существует локально для меня, и в моей локальной среде файлы c ++ недоступны.

Есть идеи, где искать библиотеку c ++?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Вы должны изменить исходные файлы openCV и затем скомпилировать их самостоятельно.

РЕДАКТИРОВАТЬ: Вы также можете изменить переменные окружения

export CV_IO_MAX_IMAGE_PIXELS=1099511627776
0 голосов
/ 06 апреля 2020

Для моей проблемы я должен был указать, что это был TIF-файл (В любом случае, самые большие изображения будут в этом формате). В этом случае очень простой способ загрузить его в массив numpy (чтобы он мог затем работать с OpenCV) - это использовать tifffile пакета.

pip insatll tifffile

Это установит его в вашу среду (obv)

import tifffile as tifi
img = tifi.imread("VeryLargeFile.tif")

Здесь вы можете использовать его, как если бы вы использовали любой массив numpy, и он полностью совместим с OpenCV и др c.

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