我正在使用的程序正在读取一些位图,并且需要 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);