-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,讓你的代碼非常慢。 –