将数据保存到opencv中的文件

时间:2013-01-21 01:56:21

标签: opencv

我需要将连接组件的区域保存为文本文件,我已编写如下代码,但我不知道我哪里出错了。任何人都可以帮我找出问题吗?

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

1 个答案:

答案 0 :(得分:2)

您对此错误并不十分具体。

如果您的文件没有打开,我建议您使用小写w作为模式标记。我从来没有见过使用大写字母,我不知道是否允许这样做。

如果您的文件中没有空格的数字,那是因为您没有写出任何空格。尝试在\n电话中添加换行符fprintf

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

在这方面,您应该使用文本模式来创建文件"wt",而不是"w"

您应该做的另一件事是 test file调用后检查fopen是否为NULL,文件是否成功打开。