gpt4 book ai didi

c++ - 如何从双数组初始化 Mat ?

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:39 26 4
gpt4 key购买 nike

我正在尝试获取垫子:

Mat getMat(){
double data[9] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};
Mat H = Mat(3, 3, CV_64FC1, data);
return H;
}

在我的主要功能中:

cout << getMat() << endl;

但是我得到:

[9.803620554343549e-312, 9.815415529972478e-312, -5.314010372517808e+303;
6.952533064904583e-310, 6.952533112667539e-310, 6.952533065625869e-310;
6.952531771280892e-310, 6.952531720111155e-310, 1.30821040513014e-310]

当我在函数内部打印时它起作用了..

最佳答案

一旦您退出 getMat 函数,data 缓冲区将被释放,因此它将包含垃圾。

您需要使用clone() 复制数据缓冲区:

Mat getMat(){
double data[9] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};
Mat H = Mat(3, 3, CV_64FC1, data).clone();
return H;
}

对于小矩阵,还可以使用:

Mat getMat(){
Mat H = (Mat1d(3, 3) << 0.0, 1.0, 2.0,
3.0, 4.0, 5.0,
6.0, 7.0, 8.0);
return H;
}

关于c++ - 如何从双数组初始化 Mat ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133539/

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