gpt4 book ai didi

c++ - 如何使用 float 组中的数据初始化 cv::Mat

转载 作者:IT老高 更新时间:2023-10-28 22:25:26 44 4
gpt4 key购买 nike

我需要创建一个 cv::Mat 变量,该变量使用 float * 数组中的数据进行初始化。这应该是基本的,但我无法弄清楚。

我有代码:

float *matrixAB = <120 floating point array created elsewhere>;
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, &matrixAB);

cv_matrixAB 永远不会包含 float 值,更重要的是不匹配 matrixAB 中包含的数据。

如果我将行更改为:

cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, matrixAB);

那么cv_matrixAB.data都是0。我也尝试过使用 CV_64F 作为类型,但我看到了相同的行为。

谁能帮我确定我哪里出错了?根据 cv::Mat 构造函数文档,我应该能够以以下形式提供我的数据float * 数组。

更新:这里有更多信息:即使下面的代码也不起作用。 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]);

最佳答案

你做得很好。但是您应该使用 at<float>() 访问 mat 元素而不是 .data (这会给你 uchar * )。或者干脆使用cout << mat;打印它的所有元素。它会给你预期的结果。

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);

cout << dummy_query.at<float>(0,2) << endl;
cout << dummy_query << endl;

它会输出:

3
[1, 2, 3, 4;
5, 6, 7, 8]

关于c++ - 如何使用 float 组中的数据初始化 cv::Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739320/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com