static char *labels[OBJ_CLASS_NUM];
double __get_us(struct timeval t) { return (t.tv_sec * 1000000 + t.tv_usec); }
inline static int clamp(float val, int min, int max)
{
return val > min ? (val < max ? val : max) : min;
}
char *readLine(FILE *fp, char *buffer, int *len)
{
int ch;
int i = 0;
size_t buff_len = 0;
buffer = (char *)malloc(buff_len + 1);
if (!buffer)
return NULL;
while ((ch = fgetc(fp)) != '\n' && ch != EOF)
{
buff_len++;
void *tmp = realloc(buffer, buff_len + 1);
if (tmp == NULL)
{
free(buffer);
return NULL;
}
buffer = (char *)tmp;
buffer[i] = (char)ch;
i++;
}
buffer[i] = '\0';
*len = buff_len;
if (ch == EOF && (i == 0 || ferror(fp)))
{
free(buffer);
return NULL;
}
return buffer;
}
int readLines(const char *fileName, char *lines[], int max_line)
{
FILE *file = fopen(fileName, "r");
char *s;
int i = 0;
int n = 0;
while ((s = readLine(file, s, &n)) != NULL)
{
lines[i++] = s;
if (i >= max_line)
break;
}
return i;
}
int readFloats(const char *fileName, float* result, int max_line, int* valid_number)
{
FILE *file = fopen(fileName, "r");
if (file == NULL) {
printf("failed to open file\n");
return 1;
}
int n = 0;
while ((n<=max_line) &&(fscanf(file, "%f", &result[n++]) != EOF))
;
fclose(file);
*valid_number = n-1;
return 0;
}
int loadLabelName(const char *locationFilename, char *label[])
{
printf("loadLabelName %s\n", locationFilename);
readLines(locationFilename, label, OBJ_CLASS_NUM);
return 0;
}
int ret = 0;
ret = loadLabelName(LABEL_NALE_TXT_PATH, labels);
if (ret < 0)
{
printf("Failed in loading label\n");
return -1;
}
printf("%sAnchors: ", INDENT);
float result[n];
int valid_number;
readFloats(anchor_path, &result[0], n, &valid_number);
for (int i=0; i<valid_number; i++){
y_info.anchors[i] = (int)result[i];
printf("%d ", y_info.anchors[i]);
}