AlexeyAB
2018-05-22 a2666d5b3cfdcbab1e2eb66ca41f8b6835d4ffc8
Fixed replace_image_to_label(): replaces directories only for Pascal VOC and COCO, replaces only extensions for other.
2 files modified
52 ■■■■ changed files
src/image.c 1 ●●●● patch | view | raw | blame | history
src/utils.c 51 ●●●● patch | view | raw | blame | history
src/image.c
@@ -999,6 +999,7 @@
                src = get_webcam_frame(cap);
                if (!src) return make_empty_image(0, 0, 0);
            } while (src->width < 1 || src->height < 1 || src->nChannels < 1);
            printf("Video stream: %d x %d \n", src->width, src->height);
        } else
            src = get_webcam_frame(cap);
    }
src/utils.c
@@ -169,7 +169,7 @@
void find_replace(char *str, char *orig, char *rep, char *output)
{
    char buffer[4096] = {0};
    char *buffer = calloc(8192, sizeof(char));
    char *p;
    sprintf(buffer, "%s", str);
@@ -181,21 +181,46 @@
    *p = '\0';
    sprintf(output, "%s%s%s", buffer, rep, p+strlen(orig));
    free(buffer);
}
void find_replace_extension(char *str, char *orig, char *rep, char *output)
{
    char *buffer = calloc(8192, sizeof(char));
    sprintf(buffer, "%s", str);
    char *p = strstr(buffer, orig);
    int offset = (p - buffer);
    int chars_from_end = strlen(buffer) - offset;
    if (!p || chars_from_end != strlen(orig)) {  // Is 'orig' even in 'str' AND is 'orig' found at the end of 'str'?
        sprintf(output, "%s", str);
        return;
    }
    *p = '\0';
    sprintf(output, "%s%s%s", buffer, rep, p + strlen(orig));
    free(buffer);
}
void replace_image_to_label(char *input_path, char *output_path) {
    find_replace(input_path, "images", "labels", output_path);
    find_replace(output_path, "JPEGImages", "labels", output_path);
    find_replace(output_path, ".jpg", ".txt", output_path);
    find_replace(output_path, ".JPG", ".txt", output_path);
    find_replace(output_path, ".jpeg", ".txt", output_path);
    find_replace(output_path, ".JPEG", ".txt", output_path);
    find_replace(output_path, ".png", ".txt", output_path);
    find_replace(output_path, ".PNG", ".txt", output_path);
    find_replace(output_path, ".bmp", ".txt", output_path);
    find_replace(output_path, ".BMP", ".txt", output_path);
    find_replace(output_path, ".ppm", ".txt", output_path);
    find_replace(output_path, ".PPM", ".txt", output_path);
    //find_replace(input_path, "images", "labels", output_path);    // COCO
    find_replace(input_path, "images/train2014/", "labels/train2014/", output_path);    // COCO
    find_replace(input_path, "images/val2014/", "labels/val2014/", output_path);        // COCO
    //find_replace(output_path, "JPEGImages", "labels", output_path);   // PascalVOC
    find_replace(output_path, "VOC2007/JPEGImages", "VOC2007/labels", output_path);     // PascalVOC
    find_replace(output_path, "VOC2012/JPEGImages", "VOC2012/labels", output_path);     // PascalVOC
    // replace only ext of files
    find_replace_extension(output_path, ".jpg", ".txt", output_path);
    find_replace_extension(output_path, ".JPG", ".txt", output_path);
    find_replace_extension(output_path, ".jpeg", ".txt", output_path);
    find_replace_extension(output_path, ".JPEG", ".txt", output_path);
    find_replace_extension(output_path, ".png", ".txt", output_path);
    find_replace_extension(output_path, ".PNG", ".txt", output_path);
    find_replace_extension(output_path, ".bmp", ".txt", output_path);
    find_replace_extension(output_path, ".BMP", ".txt", output_path);
    find_replace_extension(output_path, ".ppm", ".txt", output_path);
    find_replace_extension(output_path, ".PPM", ".txt", output_path);
}
float sec(clock_t clocks)