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

Конвертация формата Android 10-bit raw в cv::Mat

12.08.2022, 16:15. Показов 6582. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть формат RAW10. Необходимо его конвертировать в cv::Mat. Цель не сохранять в заданный контейнер. В контейнер сохраняю, чтобы убедиться в корректности конвертации

Пытаюсь сделать так:

C++
1
2
3
4
5
6
7
8
void SaveToDisk(unsigned char * buffer, unsigned int width, unsigned int height) {
        cv::Mat img;
        cv::Mat raw(height, width, CV_8UC1, buffer);
        raw.convertTo(img, CV_32FC1, 255.0); // -> не выходит
 
        //cv::cvtColor(raw, raw, cv::COLOR_GRAY2RGB); -> так тоже не выходит
        cv::imwrite("myimage.png", img);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2022, 16:15
Ответы с готовыми решениями:

Конвертация файла из .mat в csv
Нужно конвертировать файл матлаба в csv. Сделайте кто-либо, пожалуйста, потому-что у меня нет данной программы.

Можно ли преобразовать код, написанный в Pascal ABC.NET, в файл формата .mat?
можно ли, и, если можно, то как, преобразовать код, написанный в Pascal ABC.NET в файл формата .mat? program aaa; const ...

Жесткий диск формата Raw
Добрый день! Помогите, Windows 8.1, скачал обновления перезагрузился и диск на котором НЕ стоит система вдруг стал формата raw. Как...

3
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
16.08.2022, 00:14
Цитата Сообщение от Серега_123 Посмотреть сообщение
cv::Mat raw(height, width, CV_8UC1, buffer);
Вы же плавающий float пытаетесь засунуть в 8 битное значение. Точно там нужен float, а не к примеру трехканальный формат?

гугл говорит что raw 3 канальный, плюс к тому же ещё и битность 12-14-16. Вы промазали везде, судя по всему
Кликните здесь для просмотра всего текста

12 бит/14 бит/16 бит
Помимо разных уровней сжатия, “сырые” изображения могут хранить различное количество оттенков на цветовой канал на пиксель — это так называемая “битовая глубина”. Большинство камер по умолчанию снимают 12-битные RAW, то есть 4096 оттенков на канал (красный, зеленый и синий). Перемножаем 4096 на 4096 и на 4096 (три канала), получаем примерно 68,72 миллиарда вариантов цвета на пиксель.


Сам я с raw не работал, но конвертацией страдал - не совпадет битность или количество каналов - ничего не конвертируется
0
3 / 3 / 0
Регистрация: 24.02.2017
Сообщений: 140
16.08.2022, 09:35  [ТС]
Спецификация формата здесь https://developer.android.com/... rmat#RAW10. Но ничего про канальность не сказано. А битность вроде как 10-бит (исходя из названия?)

Добавлено через 46 минут
Laborant666, увидел пример конвертации здесь: https://chowdera.com/2022/03/2... 98509.html

Взял код из примера:
C++
1
2
3
4
5
        cv::Mat rgb;
        cv::Mat raw10Img(image.height, image.width, CV_16SC1, image.buffer);
 
        cv::cvtColor(raw10Img, rgb, cv::COLOR_BayerRG2RGB);
        cv::imwrite("myimage.png", rgb);
Получаю ошибку:
Code
1
Streaming ERROR : OpenCV(4.5.1) /home/opencv_build/opencv/modules/imgproc/src/demosaicing.cpp:1691: error: (-215:Assertion failed) depth == CV_8U || depth == CV_16U in function 'demosaicing'
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
21.08.2022, 20:30
Серега_123,
cv::waitKey(0);
// The following runs will crash , because rgb and gray All are 8U Data of type

Вас не смутил сей комментарий?) Автор сам пишет что 10 битный формат крашится, и советует использовать 8 битный

А ещё ниже кода автор в третьем пункте пишет - raw10 не использовать.

Нашли, но не то.

Зачем конкретно вам нужен raw10? Хотите конвертнуть в условный jpeg и сохранить себе? Или хотите что-то конвертнуть в raw10? Если первое - то банальное попиксельное чтение с занесением в mat.data или напрямую в массив с доступом через ptr или at, потом сохраняйте в jpeg, для png альфа канал дополнительно проинициализировать нулями и точно так же сохранить в файл

Добавлено через 1 минуту
Если можно - дайте любую фотку в вашем формате. Попробую пошаманить

Добавлено через 4 минуты
Кликните здесь для просмотра всего текста
отсутствие унификации кодировки самих файлов — у каждого производителя камер он свой.


Работа с RAW

Как уже было сказано выше, для RAW нет единого формата кодировки, так как каждый производитель реализует его по-своему: у Canon это CR2, у Nikon — NEF, у Sony — ARW и так далее. Поэтому выбор софта для обработки RAW выбирается каждым фотографом исходя из используемой им фототехники.

Вот здесь (вырезано с Хабр) вообще сказано что кодировки разные у всех. Накладывает свои сложности. Зачем вам конвертировать raw в mat? Что вы хотите сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2022, 20:30
Помогаю со студенческими работами здесь

Конвертация *.RAW файлов в *.tiff с камеры GitUP G3
Всем привет. Возникла такая проблема. Требуется конвертация *.RAW файлов c камеры GitUp G3. Библиотека libraw.h с использованием dcraw.c...

Как форматировать флешку формата RAW
Как форматировать флешку формата RAW? Может кто знает какиета програмы!!!

Ангуляр добавить mat-datepicker mat-option
Привет. Пытаюсь добавить выбор даты рождения и пола, смотрите фото. Делаю это так: <div> <div...

Программа для перд. просмотра формата RAW
Привет, я изображения просматриваю на компьютера через программу google picasa 3, но есть один баг, все фото которые в формате RAW(в моем...

Как поместить содержимое однобайтового файла формата *.raw. в двумерный массив?
Кто знает,как поместить содержимое однобайтового файла формата *.raw. в двумерный массив типа unsigned char, где значения элементов...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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