Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用浮点数组中的数据初始化cv::Mat_C++_Arrays_Opencv_Matrix - Fatal编程技术网

C++ 如何使用浮点数组中的数据初始化cv::Mat

C++ 如何使用浮点数组中的数据初始化cv::Mat,c++,arrays,opencv,matrix,C++,Arrays,Opencv,Matrix,我需要创建一个cv::Mat变量,该变量使用float*数组中的数据进行初始化。 这应该是基本的,但我很难弄清楚 我有密码: float *matrixAB = <120 floating point array created elsewhere>; cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, &matrixAB); 然后cv_矩阵ab.data都是0。我也尝试过使用CV_64F作为类型,但我看到了相同的行为 有人能帮我找出

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

我有密码:

float *matrixAB = <120 floating point array created elsewhere>;
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, &matrixAB);
然后
cv_矩阵ab.data
都是
0
。我也尝试过使用
CV_64F
作为类型,但我看到了相同的行为

有人能帮我找出哪里出了问题吗?根据
cv::Mat
构造函数文档,我应该能够以
float*
数组的形式提供数据

更新:这里有更多信息: 即使下面的代码也不起作用。
printf
显示
63
,这当然不是
dummy\u query\u 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()
而不是(这将为您提供
uchar*
)来访问mat元素。或者简单地使用
cout-Ah…这使它更简单。谢谢请记住,不会复制任何数据!因此,您必须确保浮点数组在矩阵存在的时间内有效,或者使用
clone()
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]);
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]