0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|||||||||||
1 | |||||||||||
OpenCV и большие изображения15.10.2023, 21:30. Показов 7868. Ответов 30
OpenCV и большие изображения
Здравствуйте. Столкнулся проблемой на opencv. Версия последняя на данный момент. 4.8.1. Пытаюсь создать и потом сохранить в tiff изображение разрешением 22000х22000 в разрядность. 48 бит. Ну то есть цветное 16 бит на канал.
Сохраняю так
Если работать с изображением размером 15000x15000, то всё нормально и оно создаётся. И сохраняется. Предполагаю, что эта ерунда происходит если размер файла будет превышать 2Гб. Но, это не есть хорошо. Как это побороть?
0
|
15.10.2023, 21:30 | |
Ответы с готовыми решениями:
30
Загрузка изображения из файла с библиотекой openCV VS2015 OpenCV: получить гистограммы каналов для области изображения Изменение параметров изображения в зависимости от положения ползунка (Opencv) OpenCv. Получить зеркальное отображение изображения, используя функции: CvScalar, CvGet2D, CvSet2D Большие изображения на S3 |
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 12:36 [ТС] | 21 |
Вы попробуйте сохранить без сжатия.
TIL_CV_Set_Pixel_48_Bit_Long_RGB - это моя функция. Я ей и записываю попиксельно данные в изображение с индексом Img_IDX. И да у меня 16 бит на канала. То есть изображение 48-битное.
0
|
323 / 190 / 46
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
23.10.2023, 12:38 | 22 |
А зачем лонги передаете?
По умолчанию без сжатия и получается. Со сжатием файл 2,5 занимает.
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 12:50 [ТС] | 23 |
Это не верно. Даже без шапки и тэгов мы имеем 32000*32000*6= 6144000000. То есть более 6 Гб.
Лонги передаю на всякий случай. Даже не лонги, а лонг лонги. Добавлено через 7 минут И лонги это индексы, а не значения пикселов.
0
|
323 / 190 / 46
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
23.10.2023, 13:11 | 24 |
Очень "замечательный" подход особенно при работе с С++.
В общем представленный код нормально работает. Все программы его понимают, размер также получается более 2гб. Для работы с файлами более 4гб используйте bigtiff.
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 13:26 [ТС] | 25 |
А что тут такого незамечательного? Если смещение внутри файла будет больше 4 Гб, то передавать просто лонг уже не выйдет. Нужно передавать long long. Или по правильному,- Int64.
Не очень понятно, как вы сохранили через OpenCV tif файл размером 6 Гб да ещё он при этом был читаем?
0
|
323 / 190 / 46
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
23.10.2023, 13:28 | 26 |
Потому что по умолчанию используется какое то сжатие и файл получился меньше 4 гб. Я же на скрине показал размер полученного файла.
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 14:03 [ТС] | 27 |
Так вот сохраните 32000х32000х48 бит файл без сжатия и посмотрите на результат.
0
|
323 / 190 / 46
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
23.10.2023, 14:42 | 28 |
Вы издеваетесь чтоли? Размер будет явно выше чем 4 гига. Чтобы сделать это нужна либа bigtiff.
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 17:02 [ТС] | 29 |
Да и не думаю издеваться. Сохранить корректно не выйдет. При чём OpenCV даже не предупредит, что превышен лимит для tiff. А, вот в opencv есть поддержка bigtiff, или её там до сих пор нет?
0
|
323 / 190 / 46
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
23.10.2023, 20:02 | 30 |
Ну может и баг.. напишите в службу поддержки. В следующем релизе учту.
А про бигтиф почитайте мануалы. Но скорее всего придется пересобрать либу. Но это то ещё удовольствие.
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
|
|
23.10.2023, 20:20 [ТС] | 31 |
Похоже, что удалось побороть лимит в 2 Гб. Объявил все индексные переменные как long long и при экспорте в RAD, как Int64. То есть можно получить tif файл размером до 4 гб. На счёт bigtif поэтому и спросил, может он уже есть в Opencv. Тем более использую самую последнюю версию. Пересобирать это да. То ещё удовольствие. Я как-то помню собирал для х86 версию 3.4.1 opencv. В сборке были готовыми только х64 dll.
0
|
23.10.2023, 20:20 | |
23.10.2023, 20:20 | |
Помогаю со студенческими работами здесь
31
OpenCV склеить изображения OpenCV открытие изображения Массив изображения opencv Обработка изображения на С++ используя OpenCV OpenCV найти контур изображения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |