【发布时间】:2014-04-30 07:55:16
【问题描述】:
我已加载图像 (cv::mat),所有像素似乎都存储为无符号字符。我需要将它们转换为 32 位浮点类型,以便执行一些数学运算。 我试过了:
Mat M;
M = imread("path\\to\\image", CV_LOAD_IMAGE_COLOR);
cvtColor( M, M, CV_RGB2GRAY);
M.convertTo(M,CV_32F);
以及像这样初始化:
Mat test = Mat(100,100,CV_32F);
但他们似乎没有做任何事情,数据仍然表示为无符号字符。如何转换 cv::mat 数据表示?
【问题讨论】:
-
请出示您的代码。
-
M是否仅包含 1 个频道?如果为 3,请改用CV_32FC3。 -
我已更新以显示我的代码。如何查看频道数量?
-
您的代码应该可以正常工作。您如何确定仍然只存在 unsigned char 值??
-
我猜数据数组总是无符号字符。你可以像
.at<float>(row, column)一样访问它们,你应该得到正确的浮动结果。