-1
我有以下代码,这是我所遵循的算法的一部分。正如你所看到的,我需要为10个不同的频段做一些计算。并将结束为每个乐队,我需要从它重新创建一个图像矩阵,问题是,我不知道如何创建/持有10循环的不同矩阵,然后在循环后,我可以构造图像一个接一个。如果您有任何想法,请让我知道谢谢opencv:创建矩阵或向量矩阵
cv::Mat _reconstructionMatrix(height,width,CV_8UC1);
_reconsPointer = _reconstructionMatrix.ptr<uchar>(0);
while(_bandIteration<_bandsNumber){
if(_mainMatrix.isContinuous())
{
nCols *= nRows;
nRows = 1;
}
//for all the pixels
for(int i = 0; i < nRows; i++)
{
p = _mainMatrix.ptr<uchar>(i);
//in the images
for (int j = 0; j < nCols; j++)
{
if(_pCounter<_totalImgNO){
....
}else{
...
_reconsPointer[_resultFlag]=_summation;
_resultFlag++;
...
}
}
}
_bandIteration++;
}
是的,我的问题是如何保存矩阵,但与您的答案有关:std:vectors使我的代码非常慢,您有任何其他建议吗? – user261002
@ user261002我建议你的个人资料,并找出你失去的时间。如果是由cv :: Mat拷贝引起的,你可以考虑一个动态分配cv :: Mats(或者它的智能指针)的指针向量。 – juanchopanza
@ user261002由于'cv :: Mat'使用引用计数,我认为,复制它应该具有可忽略的开销。所以我会很惊讶,如果它真的是'std :: vector's,让你的代码非常慢。 –