2013-01-21 2 views
1

연결된 구성 요소의 영역을 텍스트 파일로 저장해야하며 아래 코드를 작성했지만 잘못된 부분을 잘 모릅니다. 누구든지 문제를 찾아 내도록 도와 줄 수 있습니까?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

+0

음, 아직 * 무엇이 잘못되었는지는 말하지 않았습니다. – paddy

+0

텍스트 파일에서 "1. area =, 2. area = 3. area ="와 같이 인쇄해야합니다. 내가 어떻게 할 수 있니? – jagan

답변

2

당신은 오류에 대한 매우 구체적인되지 않았습니다.

파일이 열려 있지 않으면 소문자로 된 w을 모드 플래그로 사용하는 것이 좋습니다. 나는 대문자를 사용하는 것을 본 적이 없으며, 허용되는지는 모른다.

파일에 공백이없는 숫자가있는 경우 공백을 기록하지 않기 때문입니다. fprintf 호출에 개행 \n을 추가하십시오 :

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

을 그 점에서, 당신은 정말 "w" 대신 파일 "wt"을 만들 텍스트 모드를 사용합니다. 당신이해야

다른 것은 파일이 filefopen 호출 후 NULL인지 여부를 확인하여 성공적으로 오픈 여부를 테스트입니다.

+0

나는 그것을 풀었다. 그리고 그것은 본문에 인쇄 중이다. 이제 "1. area =, 2. area = 3. area ="텍스트 파일에서 인쇄해야합니다. 내가 어떻게 할 수 있니? – jagan

+0

'fprintf (파일, "% d. 면적 % d \ n", ncount, 면적); ' – paddy

+0

정말 감사합니다. 그것은 효과가 있었다. :) – jagan