1

接続されたコンポーネントの領域をテキスト ファイルとして保存する必要があり、以下のようにコードを記述しましたが、どこが間違っているのかわかりません。誰でも問題を見つけるのを手伝ってもらえますか?

imagefet=cvCreateImage(cvGetSize(lab),IPL_DEPTH_8U,3);
CvMemStorage* contour_storage = cvCreateMemStorage(0);
CvSeq* contours;
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.6f, 0.6f, 0, 2);
cvFindContours(lab, contour_storage, &contours, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
cvZero(imagefet);

FILE *file=fopen("mytxt.txt","W");
for( int ncount=1; contours != NULL; contours = contours->h_next, ncount++)
 {
    CvScalar color =  CV_RGB( rand()&255, rand()&255, rand()&255 );
    cvDrawContours( imagefet, contours, color, CV_RGB(255,255,255), -1, CV_FILLED, 8 ,cvPoint(0,0));        
    int area = abs(cvContourArea(contours, CV_WHOLE_SEQ));      
    fprintf(file,"%d",area);        
  }
fclose(file);

thnx

4

1 に答える 1

2

あなたはエラーについてあまり具体的ではありませんでした。

ファイルが開かない場合は、小文字をwモード フラグとして使用することをお勧めします。大文字が使われているのを見たことがなく、それが許されているかどうかもわかりません。

ファイルがスペースのない数字でいっぱいになっている場合は、スペースを書き出していないことが原因です。呼び出しに改行\nを追加してみてください。fprintf

fprintf(file,"%d\n",area);        

その点で、実際にはテキストモードを使用してファイルを作成する必要があり"wt"ます"w".

他にすべきことは、呼び出し後に NULLかどうかをチェックして、ファイルが正常に開かれたかどうかをテストすることです。filefopen

于 2013-01-21T02:01:38.860 に答える