【问题标题】:opencv copy one matrix into the first column of another matrixopencv将一个矩阵复制到另一个矩阵的第一列
【发布时间】:2012-05-17 00:25:02
【问题描述】:

我有一个指针向量,它指向从我的 camrea 和 framegrabber 获得的图像(大小 w=96 h=100 NoImg=100)。如你所见,我正在创建它们的矩阵并开始逐个像素地读取数据。下一步是创建一个更大的矩阵(h=9600 w=100),它可以在第一列中保存一个图像的所有像素数据,并将下一个图像数据保存到第二列,但是我达到 100 的时间的图像。 我想知道 opencv 中是否有任何足够的方法或预先准备好的方法,可以帮助我将所有图像数据直接复制到另一个矩阵的一列?还是我需要一个一个地读取所有像素,就像下面的代码一样,然后将它们一个一个地写入另一个像素中? 编辑 我最终得到以下代码

cv::Mat _mainMatrix(_imageSize,_totalImgNO,CV_8UC1);    
//loop for creating a matrix of each image in the memory
for(counter=0;counter<_totalImgNO;counter++){
    unsigned char* _pointer=(unsigned char*)_imgPtrVector.at(counter);
    cv::Mat _matrixImage(cv::Size(width,height), CV_8UC1,_pointer , cv::Mat::AUTO_STEP);         
    channels=_matrixImage.channels();
    nRows=_matrixImage.rows * channels;
    nCols=_matrixImage.cols;
    if (_matrixImage.isContinuous())
    {
        nCols *= nRows;
        nRows = 1;
    }
    for(int i = 0; i < nRows; ++i)
    {
        p = _matrixImage.ptr<uchar>(i);
        for (int  j = 0; j < nCols; ++j)
        {
            if(iRow<_totalImgNO && jCol<_imageSize){                
                _mainMatrix.at<uchar>(iRow,jCol)=p[j];
                iRow++;
            }               
        }
    }
    jCol++;
    iRow=0; 
    _matrixImage.~Mat();            
}

【问题讨论】:

    标签: c++ image-processing opencv matrix


    【解决方案1】:

    OpenCV 迭代器是 STL 迭代器。这意味着,您可以对它们使用 STL 函数。

    粗略的例子:

    cv::Mat1b bigmat(9600, 100);
    for (int i = 0; i < bigmat.cols; ++i) {
        cv::Mat1b column = bigmatrix.col(i);
        cv::Mat1b &source = *(images[i]);
        std::copy(source.begin(), source.end(), column.begin());
    }
    

    【讨论】:

      【解决方案2】:

      我认为你想要的真的很接近 reshape 功能。

      如果我错了告诉我:)

      Opencv Reshape

      【讨论】:

      • 好吧,我只是检查了一下,我认为这没什么用,因为我需要将所有图像矩阵添加到一个大矩阵中,然后我才能实现我的算法。
      • 好吧,我至少会在您的第一步中使用它,将您的所有图像放入一行。然后,将每个 img.data 指向最终图像的每一行的开头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 2015-09-06
      相关资源
      最近更新 更多