テキストファイルに出力した結果の加算
キーボードから'a'を入力した時点で'1'をテキストに書き込み、何も入力しない時は'0'を書き込むプログラムを作りました。
このプログラムを改良して、実行するたびに前のテキストの内容に実行結果を足していくようなプログラムを作りたいのですがどのように改良していけばよいでしょうか?
例えば、1回目に入力した時点と2回目に入力した時点がかぶっていたらテキストファイルにはその時点の数値が'2'となるようにしていきたいのです。
プログラムは以下です。
-------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <cxcore.h>
#include <highgui.h>
#include "cv.h"
#include "image.h"
#include "avi_w.h"
//IplImage
IplImage* src;
IplImage* gray;
IplImage* file;
int main(void)
{
char wname[] = "input";
CvCapture* capture;
IplImage *frame=NULL;
char* captureWindow = "Capture";
int key;
int count;
int score[10000][1];
int i;
int j=1;
int k=0;
char filename[256];
FILE *fp,*fq;
time_t timer;
struct tm *date;
char str[1000];
//AVIファイルの読み込み・出力
capture = cvCaptureFromFile("video.avi");
cvNamedWindow(wname,1);
frame = cvQueryFrame(capture); //キャプチャサイズを知るために画像取得
//変数群の定義
CvVideoWriter* VideoWriter = NULL;
char* file = "movie.avi"; // 出力ファイル名
double fps = 30.0; // ビデオのフレームレート
//ビデオファイル書き込みの設定
VideoWriter = cvCreateVideoWriter(file,-1,fps,cvSize(frame->width,frame->height),1);
//画像表示ウィンドウの出現位置指定
cvMoveWindow(wname, 300, 300);
//ファイルオープン
fp = fopen("frame.txt","w");
fprintf(fp,"フレーム\n");
for(count=1;;count++){
frame = cvQueryFrame(capture);
cvShowImage(wname,frame);
key = cvWaitKey(30);
if(frame == NULL)
break;
/*キー入力*/
else if(key == 'q')
break;
else if(key == 'a'){
//ビデオファイル書き込み
cvWriteFrame(VideoWriter,frame);
key = cvWaitKey(1);
printf("aが%dフレーム目で入力されました\n",count);
/*現在時間の取得*/
timer = time(NULL);/* 経過時間を取得 */
date = localtime(&timer);/* 経過時間を時間を表す構造体 date に変換 */
strftime(str, 255, "%Y, %B, %d, %A %p%I:%M:%S", date);
printf("%s\n\n", str);
//テキストファイルに出力
fprintf(fp,"[%03d] ",count);
fprintf(fp," 1\n");
}
else{
fprintf(fp,"[%03d] ",count);
fprintf(fp," 0\n");
}
}
cvReleaseVideoWriter(&VideoWriter);
cvReleaseCapture( &capture );
cvDestroyAllWindows();
fclose(fp);
return 0;
}
----------------------------------------------
補足
なるほど。確かに0.1秒未満で処理できてないかもしれないです。 TimeSpan(0, 0, 1)、fps = 1にしてみたのですが、それも何か速度が合いません。。。 画像処理の時間を計って、fpsを合わせてみたほうがいいのでしょうか? あまりfpsを落としたらカクカクした動画になってしまいますよね?? 画像形式からaviなどに書き出せればいいだけなので、VideoWriterを使うことにこだわってはいないのですが、他にいい方法などありますでしょうか?