0

C ループを反復処理する一連の画像があり、それらの記述子を計算したいと考えています。コードは非常に単純です。

int main(int argc, char** argv)
{

FILE *arq = NULL;
CImage *cimg=NULL;
Image *mask=NULL;
Image *gt=NULL;
CImage *rmask=NULL;
int  maxR, minR, r, relevance;

if (argc != 5) 
{       
     fprintf(stderr,"usage: extraction <image> <region mask> <groundtruth> <curve>\n");
     return(1);
}   

fprintf(stderr, "\nReading Image");  
cimg = ReadCImage(argv[1]);
fprintf(stderr, "\nPasso 2: Reading Segmentation");  
mask = ReadImage(argv[2]);
fprintf(stderr, "\nPasso 3: Reading Ground-Truth");  
gt = ReadImage(argv[3]); 
arq = fopen(argv[4], "a+");

maxR = MaximumValue(mask);
minR = MinimumValue(mask);

for(r=minR; r <= maxR; r++) 
{  
    relevance = isRelevant(gt, mask, r);
    rmask = createRegionImage(r, mask, cimg);
    Extraction(rmask,relevance,r,arq);

}

fclose(arq);
DestroyCImage(&cimg);
DestroyImage(&mask);
DestroyImage(&gt);  

return(0);
}

つまり、このコードは画像ファイルを開き、この画像の領域を探します。その後、各画像領域から特徴を抽出します。

私の問題は、このコードが 1 つ (26150) を除くすべての画像領域で機能することです。「AllocDoubleArray にメモリ空間を割り当てることができません」というエラーが返されます。gdbの出力は

Error:Cannot allocate memory space in in AllocDoubleArray

Program exited with code 0377.

ご覧のとおり、コンパイルは問題ありません

rm ../bin/*
cd ../; make; cd app
make[1]: Entering directory `/home/me/code/descriptor/source'
echo "libtexturedescriptors.a built..."
libtexturedescriptors.a built...
make[1]: Leaving directory /home/me/code/descriptor/source'
gcc -O2 -Wall my_program.c -o ../bin   /my_program -I../include -L../lib -ltexturedescriptors -lm

この領域は PC メモリに十分な大きさですか? 誰も前にこのエラーに直面しましたか? それを解決する方法は?

4

0 に答える 0