【发布时间】:2013-07-18 23:45:40
【问题描述】:
我正在使用的程序正在读取一些位图,并且需要 32FC1 图像。
我正在尝试创建这些图像
cv::Mat M1(255, 255, CV_32FC1, cv::Scalar(0,0,0));
cv::imwrite( "my_bitmap.bmp", M1 );
但是当我检查深度时 - 它总是 CV_8U
如何创建文件以便它们包含正确的信息?
更新:如果我使用不同的文件扩展名 - 例如tif 或 png
我正在阅读它 - 使用已经实现的代码 - 使用 cvLoadImage。
我正在尝试创建现有代码(检查图像类型)可以使用的文件。
我无法转换现有代码中的文件。现有代码不会尝试读取随机图像类型并将其转换为所需类型,而是检查文件是否为所需类型。
我发现 - 感谢您的回答 - cv::imwrite 只写入整数类型的图像。
是否有另一种方法(使用 OpenCV 或其他方式)来编写图像,以便我最终得到 CV_32F 类型?
再次更新: 读取图像的代码...如果进入 cv::Mat:
cv::Mat x = cv::imread(x_files, CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);
现有代码:
IplImage *I = cvLoadImage(x_files.c_str(), CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);
【问题讨论】:
-
你给你的外部程序什么?文件的路径还是
cv::Mat对象? -
我们能看到使用cvLoadImage读取文件的代码吗?
-
我给它文件路径