我需要创建一个cv::Mat
用我的数据初始化的变量float *
大批。
这应该是基本的,但我很难弄清楚。
我有代码:
float *matrixAB = <120 floating point array created elsewhere>;
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, &matrixAB);
but cv_matrixAB
从来不包含float
值,更重要的是与其中包含的数据不匹配matrixAB
.
如果我将该行更改为:
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, matrixAB);
那么cv_matrixAB.data
都是0
。我也尝试过使用CV_64F
作为类型,但我看到相同的行为。
谁能帮我确定我哪里出了问题?根据cv::Mat
构造函数文档,我应该能够以 a 的形式提供我的数据float *
array.
Update:这里有更多信息:
即使下面的代码也不起作用。这printf
显示63
,这当然不是一个值dummy_query_data
.
float dummy_query_data[10] = { 1, 2, 3, 4,
5, 6, 7, 8 };
cv::Mat dummy_query = cv::Mat(2, 4, CV_32F, dummy_query_data);
printf("%f\n", (float)dummy_query.data[3]);