将数组分配给OpenCV C+中初始化的Mat对象+; 我在C++中使用OpenCV(3.3.1)。我有一个初始化的Mat对象和一个数组 Mat mat(2, 3, CV_32F, Scalar::all(0.5)); float arr[6] = {1,2,3,4,5,6};

将数组分配给OpenCV C+中初始化的Mat对象+; 我在C++中使用OpenCV(3.3.1)。我有一个初始化的Mat对象和一个数组 Mat mat(2, 3, CV_32F, Scalar::all(0.5)); float arr[6] = {1,2,3,4,5,6};,c++,opencv,C++,Opencv,我想在Mat对象初始化后将数组中的数据分配给Mat对象。如何才能有效地做到这一点 我知道我可以使用Mat Mat(2,3,CV_32F,arr)用数组初始化Mat对象但我想在初始化后执行分配。一个选项可以是: std::memcpy(mat.data, arr, mat.rows*mat.cols*sizeof(float)); 另一个选项(可能不适合您,因为您可能需要保留旧标题的某些部分): 第一种方法看起来不错,但即使在处理大型阵列时,它也是最有效的方法吗?@DanielP我不确定。但是,

我想在Mat对象初始化后将数组中的数据分配给Mat对象。如何才能有效地做到这一点

我知道我可以使用
Mat Mat(2,3,CV_32F,arr)用数组初始化Mat对象但我想在初始化后执行分配。

一个选项可以是:

std::memcpy(mat.data, arr, mat.rows*mat.cols*sizeof(float));
另一个选项(可能不适合您,因为您可能需要保留旧标题的某些部分):


第一种方法看起来不错,但即使在处理大型阵列时,它也是最有效的方法吗?@DanielP我不确定。但是,如果您确实不需要复制数据,则应尝试更改设计并在初始化阶段接受阵列。向我们展示您的原始问题,有人可以为您找到更好的解决方案是的,如果我不需要复制数据,您提到的第二个选项将起作用。对于复制,第一个选项似乎工作得很好!非常感谢。
mat = Mat(2, 3, CV_32F, arr)