我无法找到这个问题的答案,但我相信应该很容易做到。
这里我有以下数据结构;
Mat MyMatrix = Mat(3, 1, CV_64F, &targetArray) //Some 3x1 data in it
// Some process...
array <double ,3> MyArray
MyMatrix.convertTo(MyArray, double, 0 , DBL_MAX)
我想将MyMatrix(我保证为3x1)转换为1D数组(数组元素应该是双倍)。我怎么能用C ++和opencv3.0.1做到这一点?
答案 0 :(得分:1)
您无法将dequeueReusableCellWithIdentifier(_:)
转换为X-Mailer
。您只能将数据复制到数组中。
给出
$headers = "From: ".$_POST['email']."\r\n".'X-Mailer: PHP/'.phpversion();
您可以使用cv::Mat
:
std::array
或Mat m = Mat(3, 1, CV_64F);
// fill with some value
:
memcpy
或者,因为它只有3个元素,所以数组构造函数:
array<double, 3> a;
memcpy(a.data(), m.ptr<double>(0), 3*sizeof(double));
或者显然是循环:
std::copy
转换可以使用array<double, 3> b;
copy(m.begin<double>(), m.end<double>(), b.begin());
:
array<double, 3> c = {m.at<double>(0), m.at<double>(1), m.at<double>(2)};
请注意,您可以使用array<double, 3> d;
for (int i = 0; i < d.size(); ++i) { d[i] = m.at<double>(i); }
或std::vector
或vector<double> e = m;
代替只有3个值的矩阵。但是,使用Vec3d
可以简化表示法并使代码更简洁。