⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageio.c

📁 学习跟踪的好程序
💻 C
📖 第 1 页 / 共 2 页
字号:
			gaClickPoint[i].y = gImageHeight-1 - gaClickPoint[i].y;			
		}	
	}

	//get trk/rpt file tiltle information
	//iio_CalcFrameNo(gTrkFilePath, &gFrameNo, &gFrameDigit);					
	iio_CalcFrameTitle(gTrkFilePath, szReadFileTitle);

	return 2;
}

///////////////////////////////////////////////////////////////////////////////
int iio_ReadBatchTrackFile(char* filepath)
//return 0=error; 3=success
{
	FILE *filein;
	char trkfile[MAXPATH];
	int i;
	int status;

	filein = fopen(filepath, "r");
	if (filein==NULL) return 0;		

	i=0;
	status = fscanf(filein, "%s", &trkfile);
	while(status!=EOF) {
		strcpy(gBtkFileArray[i], trkfile);
		status = fscanf(filein, "%d", &gBtkStepNum[i]);
		i++;
		status = fscanf(filein, "%s", &trkfile);
	} ;
		
	gBtkFileCount = i;
	return 3;
}

///////////////////////////////////////////////////////////////////////////////
void iio_ReadFileByIndex(int frameIndex)
{
	if (frameIndex<0) return;
	
	iio_ReadNextFrame(szReadFilePath, frameIndex);
}

///////////////////////////////////////////////////////////////////////////////
void iio_ReadNextFrame(char* currentFile, int nextFrameIndex)
{
	char fileNext[150];
	char strFrameNext[10];
	char strFormat[10];	
	int len;

	if (nextFrameIndex<0) return;
	
	strcpy(fileNext, currentFile);
	len = strlen(fileNext);
	wsprintf(strFormat, "%%0%dd", gFrameDigit);
	wsprintf(strFrameNext, strFormat, nextFrameIndex);
		
	strncpy(fileNext+len-4-gFrameDigit, strFrameNext, gFrameDigit);
	
	//Read frame file
	iio_ReadFileByName(fileNext);

	//update variable
	if (gInputImage!=NULL){
		strcpy(szReadFilePath, fileNext);
	}	
}


///////////////////////////////////////////////////////////////////////////////
void iio_CalcFrameNo(char* inFilename, int* outFrameNo, int* outFrameDigit)
//get frame number info from filename
{
	int len = strlen(inFilename);
	int i;	
	char strFrameNo[10];
	int	digitCount;
	
	digitCount = 0;
	for (i=len-5;i>=0;i--){				
		if (inFilename[i]<48 || inFilename[i]>57){			
			break;
		}
		(digitCount)++;
	}

	strncpy(strFrameNo, inFilename+len-4-digitCount, digitCount);
	strFrameNo[digitCount] = '\0';
	
	//output result	
	*outFrameNo = atoi(strFrameNo);
	*outFrameDigit = digitCount;
}

///////////////////////////////////////////////////////////////////////////////
void iio_CalcFrameTitle(char* inFilePath, char* outFrameTitle)
//get frame name from filepath
{
	int len = strlen(inFilePath);
	int i;
	char fileName[50] = "";

	for (i=len-5;i>=0;i--){				
		if (inFilePath[i]==92 || inFilePath[i]==47){ //equal "/" or "\"
			strcpy(fileName, inFilePath+i+1);
			break;
		}
	}

	//output result
	strcpy(outFrameTitle, fileName);
}

///////////////////////////////////////////////////////////////////////////////
void iio_CalcFrameDir(char* inFilePath, char* outFrameDir)
//get frame name from filepath
{
	int len = strlen(inFilePath);
	int i;
	char fileDir[_MAX_PATH] = "";

	strcpy(fileDir, inFilePath);
	
	//get first "/"
	for (i=len-5;i>=0;i--){				
		if (inFilePath[i]==92 || inFilePath[i]==47){ //equal "/" or "\"
			fileDir[i] = '\0';
			break;
		}
	}

	//get second "/"
	for (i=i-1;i>=0;i--){				
		if (inFilePath[i]==92 || inFilePath[i]==47){ //equal "/" or "\"
			strcpy(outFrameDir, fileDir+i+1);
			break;
		}
	}


	//output result
	//strcpy(outFrameDir, fileDir);
}

///////////////////////////////////////////////////////////////////////////////
void iio_Exit()
{
	//release image
	cvReleaseImage(&gInputImage);
}

///////////////////////////////////////////////////////////////////////////////
int iio_ReplayTrkFile()
{	
	if(iio_ReadTrackFile(gTrkFilePath)==0) {
		return 0;
	}
	
	//get trk/rpt file tiltle information
	//iio_CalcFrameNo(gTrkFilePath, &gFrameNo, &gFrameDigit);					
	iio_CalcFrameTitle(gTrkFilePath, szReadFileTitle);
	
	return 1;
}

///////////////////////////////////////////////////////////////////////////////
int iio_ReplayRptFile(int rptIndex)
{
	char	rptFilePath[MAX_PATH];
	char	strFrameNext[10];
	char	strFormat[10];	
	int		len;
	
	FILE	*filein;
	char	imgfile[MAXPATH];
	char	buffer[MAXPATH];
	int		i;	
	int		x, y, width, height;

	int		readstatus;

	if (rptIndex<0) return 0;
	
	if (gInputImage==NULL) return 0;
	
	//get Rpt file path
	strcpy(rptFilePath, gTrkFilePath);
	len = strlen(rptFilePath);
	wsprintf(strFormat, "%%0%dd", gFrameDigit);
	wsprintf(strFrameNext, strFormat, rptIndex);
	
	strncpy(rptFilePath+len-3, "rpt", 3);
	strncpy(rptFilePath+len-4-gFrameDigit, strFrameNext, gFrameDigit);
	
	//Read rpt file
	filein = fopen(rptFilePath, "r");
	if (filein==NULL) return 0;

	switch(gRptVerstion) {
	case 1:
		//CMU Verstion 1.0
		readstatus = fscanf(filein, "%s", &buffer); //frame no
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%s", &buffer); //previous frame
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%s", &imgfile); //current frame
		if (readstatus ==EOF) return 0;

		for(i=0;i<5;i++){
			readstatus = fscanf(filein, "%s", &buffer);
			if (readstatus ==EOF) return 0;
		}

		readstatus = fscanf(filein, "%d", &x);
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &y);		
		y = gInputImage->height - 1 - y;

		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &width);
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &height);
		if (readstatus ==EOF) return 0;

		break;
	case 2:
		//CID Verstion 0.9
		readstatus = fscanf(filein, "%s", &buffer); //frame no		
		if (readstatus ==EOF) return 0;

		readstatus = fscanf(filein, "%s", &imgfile); //current frame
		if (readstatus ==EOF) return 0;

		for(i=0;i<10;i++){
			fscanf(filein, "%s", &buffer);
			if (readstatus ==EOF) return 0;
		}
		
		readstatus = fscanf(filein, "%d", &x);
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &y);
		y = gInputImage->height - 1 - y;

		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &width);
		if (readstatus ==EOF) return 0;		
		readstatus = fscanf(filein, "%d", &height);
		if (readstatus ==EOF) return 0;

		break;
	case 3:
		//CID Verstion 1.0
		readstatus = fscanf(filein, "%s", &buffer); //frame no		
		if (readstatus ==EOF) return 0;

		readstatus = fscanf(filein, "%s", &imgfile); //current frame
		if (readstatus ==EOF) return 0;

		for(i=0;i<13;i++){
			fscanf(filein, "%s", &buffer);
			if (readstatus ==EOF) return 0;
		}
		
		readstatus = fscanf(filein, "%d", &x);
		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &y);
		y = gInputImage->height - 1 - y;

		if (readstatus ==EOF) return 0;
		readstatus = fscanf(filein, "%d", &width);
		if (readstatus ==EOF) return 0;		
		readstatus = fscanf(filein, "%d", &height);
		if (readstatus ==EOF) return 0;

		break;
	//default:
	}	

	fclose(filein);

	//read image file
	iio_ReadFileByName(imgfile);

	//get rpt file tiltle information
	iio_CalcFrameNo(rptFilePath, &gFrameNo, &gFrameDigit);					
	iio_CalcFrameTitle(rptFilePath, szReadFileTitle);

	//get target box
	gaClickPoint[0].x = x;
	gaClickPoint[0].y = y;
	gaClickPoint[1].x = x+width;
	gaClickPoint[1].y = y;
	gaClickPoint[2].x = x+width;
	gaClickPoint[2].y = y-height;
	gaClickPoint[3].x = x;
	gaClickPoint[3].y = y-height;

	//check errors
	if (x<0||y<0||width<=0 || height<=0){
		return 0;
	}

	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -