-1
다음 코드는 제가 따르고있는 알고리즘의 일부입니다. 보시다시피 저는 10 개의 다른 밴드에 대한 계산을해야합니다. 그리고 그것에서 이미지를 다시 만들 필요가 각 밴드에 대한 매트릭스로 끝날 것입니다, 문제는 내가 만드는 방법을 알고/while 루프에서 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++;
}
옙, 내 질문은 행렬을 유지하는 방법입니다,하지만 당신의 대답과 관련된 : 표준 : 벡터 내 코드를 매우 느리게 만들어, 다른 suggrstion가 있습니까? – user261002
@ user261002 프로필을 작성하고 시간을 잊어 버리는 곳을 찾아내는 것이 좋습니다. cv :: Mat 복사본 때문이라면 cv :: Mats (또는 스마트 포인터)에 동적으로 할당 된 포인터의 벡터를 고려할 수 있습니다. – juanchopanza
@ user261002'cv :: Mat'은 참조 카운팅을 사용하기 때문에 복사하는 데 오버 헤드가 없어야합니다. 그래서 코드가 매우 느려지는'std :: vector's라면 정말 놀라실 것입니다. –