我需要将连接组件的区域保存为文本文件,我已经编写了如下代码,但我不知道我在哪里出错了。有人能帮我找出这个问题吗?
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);
感谢
您没有详细说明错误。
如果你的文件没有打开,我建议你使用小写的w
作为模式标志。我从来没有见过大写的,我不知道这是否被允许。
如果你的文件充满了没有空格的数字,那是因为你没有写出任何空格。尝试在fprintf
调用中添加换行符n
:
fprintf(file,"%dn",area);
在这方面,您应该真正使用文本模式来创建文件"wt"
而不是"w"
。
您应该做的另一件事是通过检查fopen
调用后file
是否为NULL来测试文件是否成功打开。