Opencv: сохранить двойную матрицу с помощью imwrite

0

У меня есть матрица (Mat), образованная двойным, в диапазоне [0,1]. Когда я сохраняю его с помощью команды imwrite, получившееся изображение полностью черное. Я предполагаю, что проблема - проблема кастинга, но я не знаю, как ее решить. благодаря

  • 1
    попробуйте cv::imwrite(filename, yourmatrix*255) В противном случае посмотрите docs.opencv.org/modules/highgui/doc/…, так как некоторые расширения файлов допускают только ограниченные типы данных.
Теги:
opencv

2 ответа

1

Единственный способ OpenCV хранить массив двойников без преобразования их в другие форматы (и потерять информацию) - это использовать FileStorage. imwrite ограничивается массивами "char" или "short".

1

Вы получаете полностью черное изображение, потому что все пиксели изображений находятся в пределах диапазона [0,1] (фактически либо 0, либо 1 при сохранении изображения), который приближается к суммарному черному (либо для изображения с серой шкалой, либо для цветного изображения).

Чтобы сохранить матрицу в изображении с обычным цветом, сначала нужно преобразовать двойную матрицу в диапазон [0, 255], умножив каждое значение на 255. Не забудьте преобразовать обратно, если вы позже загрузите матрицу из этого изображения, разделив каждое значение на 255.

  • 1
    Я думаю, что вы должны сделать convertTo (converted_Mat , CV_8U or CV_16U , 255 or 65535) чтобы также установить правильный тип.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню