2 / 2 / 0
Регистрация: 24.02.2017
Сообщений: 91
1

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

12.08.2022, 16:15. Показов 904. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2022, 16:15
Ответы с готовыми решениями:

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

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

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

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

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

3
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
16.08.2022, 00:14 2
Цитата Сообщение от Серега_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
2 / 2 / 0
Регистрация: 24.02.2017
Сообщений: 91
16.08.2022, 09:35  [ТС] 3
Спецификация формата здесь 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);
Получаю ошибку:
Код
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
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
21.08.2022, 20:30 4
Серега_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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2022, 20:30
Помогаю со студенческими работами здесь

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

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

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

Как превратить фото формата tif однобайтовый или двухбайтовый raw?
Подскажите кто-нибудь, как превратить фото формата tif в однобайтовый или двухбайтовый фaйл типа ...

Конвертация файла из формата .ui в .py
Всем здравствуйте! Только начал изучать PyQt5 и установил Qt Designer в папку...

как отформатировать флеху формата RAW.через управление компом попробовал,не получилось.
или есть какая нибудь прога,которая может справиться с этим.Подскажите .Заранее спасибо!)


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru