我有一个指向矢量的指针,它指向我从camrea和framegrabber获得的图像(大小w = 96 h = 100 NoImg = 100)。你看到我正在创建它们的矩阵并开始逐个像素地读取数据。下一步是创建一个更大的矩阵(h = 9600 w = 100),它可以保存第一列中一个图像的所有像素数据,并将下一个图像数据保存到第二列,但是达到100的图像。 我想知道在opencv中是否有任何足够的方法或预备方法,这有助于我将所有图像数据直接复制到另一个矩阵的一列?或者是否需要逐个读取所有像素,如我的代码在下面,并在另一个内部逐个写入? 编辑 我结束了下面的代码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();
}
感谢您的回答。我会检查并让你知道 – user261002
以及我只是检查它,我不认为这是有用的,因为我需要将所有图像矩阵添加到一个大矩阵,然后我可以实现我的算法。 – user261002
那么,我会至少在第一步中使用它,以便将所有图像合并到一行中。然后,将每个img.data指向最终图像每行的开头。 – jlengrand