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(>);
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 メモリに十分な大きさですか? 誰も前にこのエラーに直面しましたか? それを解決する方法は?