我在openCV中创建了一个Mat如下:
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 I/O函数将图像保存为XML或YAML格式。
深度,convertTo