У меня есть матрица (Mat), образованная двойным, в диапазоне [0,1]. Когда я сохраняю его с помощью команды imwrite, получившееся изображение полностью черное. Я предполагаю, что проблема - проблема кастинга, но я не знаю, как ее решить. благодаря
Единственный способ OpenCV хранить массив двойников без преобразования их в другие форматы (и потерять информацию) - это использовать FileStorage. imwrite ограничивается массивами "char" или "short".
Вы получаете полностью черное изображение, потому что все пиксели изображений находятся в пределах диапазона [0,1]
(фактически либо 0, либо 1 при сохранении изображения), который приближается к суммарному черному (либо для изображения с серой шкалой, либо для цветного изображения).
Чтобы сохранить матрицу в изображении с обычным цветом, сначала нужно преобразовать двойную матрицу в диапазон [0, 255]
, умножив каждое значение на 255
. Не забудьте преобразовать обратно, если вы позже загрузите матрицу из этого изображения, разделив каждое значение на 255
.
convertTo (converted_Mat , CV_8U or CV_16U , 255 or 65535)
чтобы также установить правильный тип.
cv::imwrite(filename, yourmatrix*255)
В противном случае посмотрите docs.opencv.org/modules/highgui/doc/…, так как некоторые расширения файлов допускают только ограниченные типы данных.