OpenCV:如何读取浮点图像
Posted
技术标签:
【中文标题】OpenCV:如何读取浮点图像【英文标题】:OpenCV: how to read an image of floats 【发布时间】:2013-03-04 17:41:15 【问题描述】:我在 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 矩阵
谢谢
【问题讨论】:
【参考方案1】:见imwrite
函数imwrite将图像保存到指定文件。图像格式是根据文件扩展名选择的(有关扩展名列表,请参阅 imread())。 只有 8 位(或 16 位无符号 (CV_16U),在 PNG、JPEG 2000 和 TIFF 的情况下)单通道或 3 通道(使用“BGR”通道顺序)图像可以使用此函数保存。如果格式、深度或通道顺序不同,使用 Mat::convertTo() 和 cvtColor() 进行转换后再保存。 或者,使用通用 XML I/O 函数将图像保存为 XML 或 YAML 格式。
depth, convertTo
【讨论】:
以上是关于OpenCV:如何读取浮点图像的主要内容,如果未能解决你的问题,请参考以下文章
Opencv如何使用MatIterator迭代具有浮点RGB值的彩色图像?