📄 imageio.c
字号:
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 + -