Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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++_Opencv - Fatal编程技术网

C++ 合并两个cv::Mat而不复制数据

C++ 合并两个cv::Mat而不复制数据,c++,opencv,C++,Opencv,考虑将两个矩阵作为以下sample_method()方法的输入参数,我想将两个矩阵m1和m2合并到一个新矩阵m12。我读了,然后也读了,但这两个解决方案将数据从源矩阵复制到目标矩阵 bool sample_method(const Mat& m1, const Mat& m2) { if(m1.cols != m2.cols) { cout << "Error: m1.cols != m2.cols" << endl;

考虑将两个矩阵作为以下
sample_method()
方法的输入参数,我想将两个矩阵
m1
m2
合并到一个新矩阵
m12
。我读了,然后也读了,但这两个解决方案将数据从源矩阵复制到目标矩阵

bool sample_method(const Mat& m1, const Mat& m2)
{
    if(m1.cols != m2.cols)
    {
        cout << "Error: m1.cols != m2.cols" << endl;
        return false;
    }

    Mat m12(m1.rows+m2.rows,m1.cols,DataType<float>::type);
    // merging m1 and m2
    m12(Rect(0,0,m1.cols,m1.rows)) = m1;
    m12(Rect(0,m1.rows,m2.cols,m2.rows)) = m2;

    return true;
}
bool-sample\u方法(常数材料和m1、常数材料和m2)
{
如果(m1.cols!=m2.cols)
{

cout我认为你永远也无法做到这一点。Mat对象有一个指向其数据的指针,然后是帮助它解释该数据的参数。你要求用两个不相关的内存块制作一个Mat,如果不存储指向这两个块的指针,就无法做到这一点,而且Mat没有指向p的成员变量在..

中使用它。我认为你永远都无法实现这一点。Mat对象有一个指向其数据的指针,然后是帮助它解释该数据的参数。你要求用两个不相关的内存块制作一个Mat,如果不存储指向这两个块的指针,就无法实现,而且Mat没有成员变量能把它放进去

m12(Rect(0,0,m1.cols,m1.rows)) = m1;
左侧部分为m12矩阵的指定部分创建一个标头。当您将m1分配给此标头时,此标头开始指向与m1相同的数据。注意:此处不复制数据。 此代码不起任何作用

不复制数据就不可能合并两个矩阵

左侧部分为m12矩阵的指定部分创建一个标头。当您将m1分配给此标头时,此标头开始指向与m1相同的数据。注意:此处不复制数据。 此代码不起任何作用

不复制数据就不可能合并两个矩阵