Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/64: Рейтинг темы: голосов - 64, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52

OpenCV и большие изображения

15.10.2023, 21:30. Показов 24423. Ответов 30

Студворк — интернет-сервис помощи студентам
OpenCV и большие изображения

Здравствуйте.

Столкнулся проблемой на opencv. Версия последняя на данный момент. 4.8.1.
Пытаюсь создать и потом сохранить в tiff изображение разрешением 22000х22000 в разрядность. 48 бит. Ну то есть цветное 16 бит на канал.
C++
1
TIL_CV_Image[Img_IDX].create(Height_In,Width_In,Bit_Depth_In);
Оно создаётся. Но процесс сохранения как бы зависает. И файл не появляется.
Сохраняю так
C++
1
cv::imwrite(File_Name, TIL_CV_Image[Img_IDX]);
Пишу прослоечную DLL для другого языка. Для этого использую VC++ 2017.
Если работать с изображением размером 15000x15000, то всё нормально и оно создаётся. И сохраняется.
Предполагаю, что эта ерунда происходит если размер файла будет превышать 2Гб.
Но, это не есть хорошо. Как это побороть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2023, 21:30
Ответы с готовыми решениями:

Загрузка изображения из файла с библиотекой openCV VS2015
Не работает загрузка изображения из файла. Переменная после использования фунцкии из библиотеки opencv cvLoadImage остается...

OpenCV: получить гистограммы каналов для области изображения
Здравствуйте, у меня есть простой код, который собирается, но вылетает при запуске. Задача: получить гистограммы каналов для области...

Изменение параметров изображения в зависимости от положения ползунка (Opencv)
Помогите пожалуйста написать класс, который будет изменять яркость, насыщенность и цветовую гамму изображения в зависимости от положения...

30
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 12:36  [ТС]
Студворк — интернет-сервис помощи студентам
Вы попробуйте сохранить без сжатия.
TIL_CV_Set_Pixel_48_Bit_Long_RGB - это моя функция.
Я ей и записываю попиксельно данные в изображение с индексом Img_IDX.
И да у меня 16 бит на канала. То есть изображение 48-битное.
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
23.10.2023, 12:38
Цитата Сообщение от Burster Посмотреть сообщение
И да у меня 16 бит на канала.
А зачем лонги передаете?


Цитата Сообщение от Burster Посмотреть сообщение
Вы попробуйте сохранить без сжатия.
По умолчанию без сжатия и получается. Со сжатием файл 2,5 занимает.
0
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 12:50  [ТС]
Это не верно. Даже без шапки и тэгов мы имеем 32000*32000*6= 6144000000. То есть более 6 Гб.
Лонги передаю на всякий случай. Даже не лонги, а лонг лонги.

Добавлено через 7 минут
И лонги это индексы, а не значения пикселов.
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
23.10.2023, 13:11
Цитата Сообщение от Burster Посмотреть сообщение
Лонги передаю на всякий случай.
Очень "замечательный" подход особенно при работе с С++.


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

Цитата Сообщение от Burster Посмотреть сообщение
Даже без шапки и тэгов мы имеем 32000*32000*6= 6144000000. То есть более 6 Гб.
Для работы с файлами более 4гб используйте bigtiff.
0
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 13:26  [ТС]
А что тут такого незамечательного? Если смещение внутри файла будет больше 4 Гб, то передавать просто лонг уже не выйдет. Нужно передавать long long. Или по правильному,- Int64.
Не очень понятно, как вы сохранили через OpenCV tif файл размером 6 Гб да ещё он при этом был читаем?
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
23.10.2023, 13:28
Цитата Сообщение от Burster Посмотреть сообщение
как вы сохранили через OpenCV tif файл размером 6 Гб да ещё он при этом был читаем?
Потому что по умолчанию используется какое то сжатие и файл получился меньше 4 гб. Я же на скрине показал размер полученного файла.
0
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 14:03  [ТС]
Так вот сохраните 32000х32000х48 бит файл без сжатия и посмотрите на результат.
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
23.10.2023, 14:42
Цитата Сообщение от Burster Посмотреть сообщение
Так вот сохраните 32000х32000х48 бит файл без сжатия и посмотрите на результат.
Вы издеваетесь чтоли? Размер будет явно выше чем 4 гига. Чтобы сделать это нужна либа bigtiff.
0
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 17:02  [ТС]
Да и не думаю издеваться. Сохранить корректно не выйдет. При чём OpenCV даже не предупредит, что превышен лимит для tiff. А, вот в opencv есть поддержка bigtiff, или её там до сих пор нет?
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
23.10.2023, 20:02
Ну может и баг.. напишите в службу поддержки. В следующем релизе учту.
А про бигтиф почитайте мануалы. Но скорее всего придется пересобрать либу. Но это то ещё удовольствие.
0
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 52
23.10.2023, 20:20  [ТС]
Похоже, что удалось побороть лимит в 2 Гб. Объявил все индексные переменные как long long и при экспорте в RAD, как Int64. То есть можно получить tif файл размером до 4 гб. На счёт bigtif поэтому и спросил, может он уже есть в Opencv. Тем более использую самую последнюю версию. Пересобирать это да. То ещё удовольствие. Я как-то помню собирал для х86 версию 3.4.1 opencv. В сборке были готовыми только х64 dll.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2023, 20:20
Помогаю со студенческими работами здесь

OpenCv. Получить зеркальное отображение изображения, используя функции: CvScalar, CvGet2D, CvSet2D
Доброго времени суток. Прошу помощи в написании кода. Нужно сделать зеркальное отображение изображения, используя только эти функции:...

Большие изображения на S3
Когда-то читал про питоновскую(?) либу, которая может брать изображения с s3 и на лету создавать несколько копий разного размера (допустим...

OpenCV склеить изображения
Пытаюсь переделать программу на плюсах(https://ramsrigoutham.com/2012/11/22/panorama-image-stitching-in-opencv/) под java но никак не...

OpenCV открытие изображения
Среда - Visual Studio 2013 Подключенные библиотеки OpenCV для фильтрации изображения Нужно загрузить изображение и отфильтровать...

Массив изображения opencv
Здравствуйте. Никто не знает, как записать в массив значения цветов пикселей? У меня есть код, который изменяет изображение, выделяя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru