Я создал Mat в openCV следующим образом:
cv::Mat m = cv::Mat(10,10, CV_32FC1);
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
m.at<float>(i,j) = 1;
}
}
и сохранить его на диск:
imwrite("out.png", m);
Я сейчас пытаюсь прочитать это следующим образом:
cv::Mat m = imread("out.png", CV_LOAD_IMAGE_UNCHANGED);
но данные в m кажутся совершенно случайными, когда m.at<float>(5,5)
например.
Как я могу прочитать обратно данные, которые записаны в него? Например, в Matlab я могу сделать:
m = imread("out.png")
и это дает мне правильную матрицу 1
Спасибо
Увидеть imwrite
Функция imwrite сохраняет изображение в указанном файле. Формат изображения выбирается на основе расширения имени файла (список расширений см. В imread ()). Только 8-битный (или 16-битный без знака (CV_16U) в случае PNG, JPEG 2000 и TIFF) одноканальный или 3-канальный (с порядком каналов BGR) изображения могут быть сохранены с помощью этой функции. Если формат, глубина или порядок каналов отличаются, используйте Mat :: convertTo () и cvtColor () для преобразования перед сохранением. Или используйте универсальные функции ввода-вывода XML для сохранения изображения в формате XML или YAML.
Других решений пока нет …