У меня есть следующий код, который является частью алгоритма, за которым я следую. как вы видите, мне нужно сделать некоторые вычисления для 10 разных групп. и в итоге получится матрица для каждой группы, которую мне нужно, чтобы воссоздать изображение из нее, проблема в том, что я не знаю, как создавать/удерживать 10 различных матриц во время цикла, а затем после цикла while я могу построить изображения один за другим. если у вас есть идеи, пожалуйста, дайте мне знать спасибо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++;
}
yep, мой вопрос в том, как удержать матрицы, но связанные с вашим ответом: std: векторы делают мой код очень медленным, есть ли у вас какие-либо другие предложения? – user261002
@ user261002 Я предлагаю вам профиль и выяснить, где вы теряете время. Если это связано с копиями cv :: Mat, вы можете рассмотреть вектор указателей, динамически выделяемых cv :: Mats (или интеллектуальных указателей). – juanchopanza
@ user261002 Поскольку 'cv :: Mat' использует подсчет ссылок, я думаю, что копирование должно иметь незначительные накладные расходы. Поэтому я был бы удивлен, если бы на самом деле был 'std :: vector', который делает ваш код очень медленным. –