Darknet/YOLO
Object Detection Framework
image.c File Reference
Include dependency graph for image.c:

Macros

#define _GNU_SOURCE
 
#define _USE_MATH_DEFINES
 
#define STB_IMAGE_IMPLEMENTATION
 
#define STB_IMAGE_WRITE_IMPLEMENTATION
 

Functions

float get_color (int c, int x, int max)
 
static float get_pixel (image m, int x, int y, int c)
 
static float get_pixel_extend (image m, int x, int y, int c)
 
static void set_pixel (image m, int x, int y, int c, float val)
 
static void add_pixel (image m, int x, int y, int c, float val)
 
void composite_image (image source, image dest, int dx, int dy)
 
image border_image (image a, int border)
 
image tile_images (image a, image b, int dx)
 
image get_label (image **characters, char *string, int size)
 
image get_label_v3 (image **characters, char *string, int size)
 
void draw_label (image a, int r, int c, image label, const float *rgb)
 
void draw_weighted_label (image a, int r, int c, image label, const float *rgb, const float alpha)
 
void draw_box_bw (image a, int x1, int y1, int x2, int y2, float brightness)
 
void draw_box_width_bw (image a, int x1, int y1, int x2, int y2, int w, float brightness)
 
void draw_box (image a, int x1, int y1, int x2, int y2, float r, float g, float b)
 
void draw_box_width (image a, int x1, int y1, int x2, int y2, int w, float r, float g, float b)
 
void draw_bbox (image a, box bbox, int w, float r, float g, float b)
 
image ** load_alphabet ()
 To create the labels shown on the images, Darknet has tiny images of each character in the ASCII table. More...
 
detection_with_classget_actual_detections (detection *dets, int dets_num, float thresh, int *selected_detections_num, char **names)
 
int compare_by_lefts (const void *a_ptr, const void *b_ptr)
 
int compare_by_probs (const void *a_ptr, const void *b_ptr)
 
void draw_detections_v3 (image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes, int ext_output)
 
void draw_detections (image im, int num, float thresh, box *boxes, float **probs, char **names, image **alphabet, int classes)
 
void transpose_image (image im)
 
void rotate_image_cw (image im, int times)
 
void flip_image (image a)
 
image image_distance (image a, image b)
 
void embed_image (image source, image dest, int dx, int dy)
 
image collapse_image_layers (image source, int border)
 
void constrain_image (image im)
 
void normalize_image (image p)
 
void normalize_image2 (image p)
 
void copy_image_inplace (image src, image dst)
 
image copy_image (image p)
 
void rgbgr_image (image im)
 
void show_image (image p, const char *name)
 
void save_image_png (image im, const char *name)
 
void save_image_options (image im, const char *name, IMTYPE f, int quality)
 
void save_image (image im, const char *name)
 
void save_image_jpg (image p, const char *name)
 
void show_image_layers (image p, char *name)
 
void show_image_collapsed (image p, char *name)
 
image make_empty_image (int w, int h, int c)
 
image make_image (int w, int h, int c)
 
image make_random_image (int w, int h, int c)
 
image float_to_image_scaled (int w, int h, int c, float *data)
 
image float_to_image (int w, int h, int c, float *data)
 
image rotate_crop_image (image im, float rad, float s, int w, int h, float dx, float dy, float aspect)
 
image rotate_image (image im, float rad)
 
void translate_image (image m, float s)
 
void scale_image (image m, float s)
 
image crop_image (image im, int dx, int dy, int w, int h)
 
int best_3d_shift_r (image a, image b, int min, int max)
 
int best_3d_shift (image a, image b, int min, int max)
 
void composite_3d (char *f1, char *f2, char *out, int delta)
 
void fill_image (image m, float s)
 
void letterbox_image_into (image im, int w, int h, image boxed)
 
image letterbox_image (image im, int w, int h)
 
image resize_max (image im, int max)
 
image resize_min (image im, int min)
 
image random_crop_image (image im, int w, int h)
 
image random_augment_image (image im, float angle, float aspect, int low, int high, int size)
 
float three_way_max (float a, float b, float c)
 
float three_way_min (float a, float b, float c)
 
void rgb_to_hsv (image im)
 
void hsv_to_rgb (image im)
 
image grayscale_image (image im)
 
image threshold_image (image im, float thresh)
 
image blend_image (image fore, image back, float alpha)
 
void scale_image_channel (image im, int c, float v)
 
void translate_image_channel (image im, int c, float v)
 
image binarize_image (image im)
 
void saturate_image (image im, float sat)
 
void hue_image (image im, float hue)
 
void exposure_image (image im, float sat)
 
void distort_image (image im, float hue, float sat, float val)
 
void random_distort_image (image im, float hue, float saturation, float exposure)
 
void saturate_exposure_image (image im, float sat, float exposure)
 
float bilinear_interpolate (image im, float x, float y, int c)
 
void quantize_image (image im)
 
void make_image_red (image im)
 
image make_attention_image (int img_size, float *original_delta_cpu, float *original_input_cpu, int w, int h, int c, float alpha)
 
image resize_image (image im, int w, int h)
 
void test_resize (char *filename)
 
image load_image_stb (char *filename, int channels)
 
image load_image_stb_resize (char *filename, int w, int h, int c)
 
image load_image (char *filename, int desired_width, int desired_height, int channels)
 Load the given image. More...
 
image load_image_color (char *filename, int w, int h)
 
image get_image_layer (image m, int l)
 
void print_image (image m)
 
image collapse_images_vert (image *ims, int n)
 
image collapse_images_horz (image *ims, int n)
 
void show_image_normalized (image im, const char *name)
 
void show_images (image *ims, int n, char *window)
 
void free_image (image m)
 
LIB_API void copy_image_from_bytes (image im, char *pdata)
 

Variables

int check_mistakes
 
float colors [6][3] = { {1,0,1}, {0,0,1},{0,1,1},{0,1,0},{1,1,0},{1,0,0} }
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

◆ _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

◆ STB_IMAGE_IMPLEMENTATION

#define STB_IMAGE_IMPLEMENTATION

◆ STB_IMAGE_WRITE_IMPLEMENTATION

#define STB_IMAGE_WRITE_IMPLEMENTATION

Function Documentation

◆ get_color()

float get_color ( int  c,
int  x,
int  max 
)
Here is the caller graph for this function:

◆ get_pixel()

static float get_pixel ( image  m,
int  x,
int  y,
int  c 
)
static
Here is the caller graph for this function:

◆ get_pixel_extend()

static float get_pixel_extend ( image  m,
int  x,
int  y,
int  c 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_pixel()

static void set_pixel ( image  m,
int  x,
int  y,
int  c,
float  val 
)
static
Here is the caller graph for this function:

◆ add_pixel()

static void add_pixel ( image  m,
int  x,
int  y,
int  c,
float  val 
)
static
Here is the caller graph for this function:

◆ composite_image()

void composite_image ( image  source,
image  dest,
int  dx,
int  dy 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ border_image()

image border_image ( image  a,
int  border 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tile_images()

image tile_images ( image  a,
image  b,
int  dx 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_label()

image get_label ( image **  characters,
char *  string,
int  size 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_label_v3()

image get_label_v3 ( image **  characters,
char *  string,
int  size 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_label()

void draw_label ( image  a,
int  r,
int  c,
image  label,
const float *  rgb 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_weighted_label()

void draw_weighted_label ( image  a,
int  r,
int  c,
image  label,
const float *  rgb,
const float  alpha 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_box_bw()

void draw_box_bw ( image  a,
int  x1,
int  y1,
int  x2,
int  y2,
float  brightness 
)
Here is the caller graph for this function:

◆ draw_box_width_bw()

void draw_box_width_bw ( image  a,
int  x1,
int  y1,
int  x2,
int  y2,
int  w,
float  brightness 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_box()

void draw_box ( image  a,
int  x1,
int  y1,
int  x2,
int  y2,
float  r,
float  g,
float  b 
)
Here is the caller graph for this function:

◆ draw_box_width()

void draw_box_width ( image  a,
int  x1,
int  y1,
int  x2,
int  y2,
int  w,
float  r,
float  g,
float  b 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_bbox()

void draw_bbox ( image  a,
box  bbox,
int  w,
float  r,
float  g,
float  b 
)
Here is the call graph for this function:

◆ load_alphabet()

image** load_alphabet ( )

To create the labels shown on the images, Darknet has tiny images of each character in the ASCII table.

And multiple sizes of each one. This is the function that loads all of these into memory. See the images in the data/labels/ directory.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_actual_detections()

detection_with_class* get_actual_detections ( detection dets,
int  dets_num,
float  thresh,
int *  selected_detections_num,
char **  names 
)
Here is the caller graph for this function:

◆ compare_by_lefts()

int compare_by_lefts ( const void *  a_ptr,
const void *  b_ptr 
)
Here is the caller graph for this function:

◆ compare_by_probs()

int compare_by_probs ( const void *  a_ptr,
const void *  b_ptr 
)
Here is the caller graph for this function:

◆ draw_detections_v3()

void draw_detections_v3 ( image  im,
detection dets,
int  num,
float  thresh,
char **  names,
image **  alphabet,
int  classes,
int  ext_output 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ draw_detections()

void draw_detections ( image  im,
int  num,
float  thresh,
box boxes,
float **  probs,
char **  names,
image **  alphabet,
int  classes 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ transpose_image()

void transpose_image ( image  im)

◆ rotate_image_cw()

void rotate_image_cw ( image  im,
int  times 
)
Here is the caller graph for this function:

◆ flip_image()

void flip_image ( image  a)
Here is the caller graph for this function:

◆ image_distance()

image image_distance ( image  a,
image  b 
)
Here is the call graph for this function:

◆ embed_image()

void embed_image ( image  source,
image  dest,
int  dx,
int  dy 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_image_layers()

image collapse_image_layers ( image  source,
int  border 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ constrain_image()

void constrain_image ( image  im)
Here is the caller graph for this function:

◆ normalize_image()

void normalize_image ( image  p)
Here is the caller graph for this function:

◆ normalize_image2()

void normalize_image2 ( image  p)

◆ copy_image_inplace()

void copy_image_inplace ( image  src,
image  dst 
)
Here is the caller graph for this function:

◆ copy_image()

image copy_image ( image  p)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rgbgr_image()

void rgbgr_image ( image  im)
Here is the caller graph for this function:

◆ show_image()

void show_image ( image  p,
const char *  name 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ save_image_png()

void save_image_png ( image  im,
const char *  name 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ save_image_options()

void save_image_options ( image  im,
const char *  name,
IMTYPE  f,
int  quality 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ save_image()

void save_image ( image  im,
const char *  name 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ save_image_jpg()

void save_image_jpg ( image  p,
const char *  name 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ show_image_layers()

void show_image_layers ( image  p,
char *  name 
)
Here is the call graph for this function:

◆ show_image_collapsed()

void show_image_collapsed ( image  p,
char *  name 
)
Here is the call graph for this function:

◆ make_empty_image()

image make_empty_image ( int  w,
int  h,
int  c 
)
Here is the caller graph for this function:

◆ make_image()

image make_image ( int  w,
int  h,
int  c 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ make_random_image()

image make_random_image ( int  w,
int  h,
int  c 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ float_to_image_scaled()

image float_to_image_scaled ( int  w,
int  h,
int  c,
float *  data 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ float_to_image()

image float_to_image ( int  w,
int  h,
int  c,
float *  data 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rotate_crop_image()

image rotate_crop_image ( image  im,
float  rad,
float  s,
int  w,
int  h,
float  dx,
float  dy,
float  aspect 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rotate_image()

image rotate_image ( image  im,
float  rad 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ translate_image()

void translate_image ( image  m,
float  s 
)

◆ scale_image()

void scale_image ( image  m,
float  s 
)
Here is the caller graph for this function:

◆ crop_image()

image crop_image ( image  im,
int  dx,
int  dy,
int  w,
int  h 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ best_3d_shift_r()

int best_3d_shift_r ( image  a,
image  b,
int  min,
int  max 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ best_3d_shift()

int best_3d_shift ( image  a,
image  b,
int  min,
int  max 
)
Here is the call graph for this function:

◆ composite_3d()

void composite_3d ( char *  f1,
char *  f2,
char *  out,
int  delta 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fill_image()

void fill_image ( image  m,
float  s 
)
Here is the caller graph for this function:

◆ letterbox_image_into()

void letterbox_image_into ( image  im,
int  w,
int  h,
image  boxed 
)
Here is the call graph for this function:

◆ letterbox_image()

image letterbox_image ( image  im,
int  w,
int  h 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ resize_max()

image resize_max ( image  im,
int  max 
)
Here is the call graph for this function:

◆ resize_min()

image resize_min ( image  im,
int  min 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ random_crop_image()

image random_crop_image ( image  im,
int  w,
int  h 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ random_augment_image()

image random_augment_image ( image  im,
float  angle,
float  aspect,
int  low,
int  high,
int  size 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ three_way_max()

float three_way_max ( float  a,
float  b,
float  c 
)
Here is the caller graph for this function:

◆ three_way_min()

float three_way_min ( float  a,
float  b,
float  c 
)
Here is the caller graph for this function:

◆ rgb_to_hsv()

void rgb_to_hsv ( image  im)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ hsv_to_rgb()

void hsv_to_rgb ( image  im)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ grayscale_image()

image grayscale_image ( image  im)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ threshold_image()

image threshold_image ( image  im,
float  thresh 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ blend_image()

image blend_image ( image  fore,
image  back,
float  alpha 
)
Here is the call graph for this function:

◆ scale_image_channel()

void scale_image_channel ( image  im,
int  c,
float  v 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ translate_image_channel()

void translate_image_channel ( image  im,
int  c,
float  v 
)
Here is the call graph for this function:

◆ binarize_image()

image binarize_image ( image  im)
Here is the call graph for this function:

◆ saturate_image()

void saturate_image ( image  im,
float  sat 
)
Here is the call graph for this function:

◆ hue_image()

void hue_image ( image  im,
float  hue 
)
Here is the call graph for this function:

◆ exposure_image()

void exposure_image ( image  im,
float  sat 
)
Here is the call graph for this function:

◆ distort_image()

void distort_image ( image  im,
float  hue,
float  sat,
float  val 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ random_distort_image()

void random_distort_image ( image  im,
float  hue,
float  saturation,
float  exposure 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ saturate_exposure_image()

void saturate_exposure_image ( image  im,
float  sat,
float  exposure 
)
Here is the call graph for this function:

◆ bilinear_interpolate()

float bilinear_interpolate ( image  im,
float  x,
float  y,
int  c 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ quantize_image()

void quantize_image ( image  im)
Here is the caller graph for this function:

◆ make_image_red()

void make_image_red ( image  im)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ make_attention_image()

image make_attention_image ( int  img_size,
float *  original_delta_cpu,
float *  original_input_cpu,
int  w,
int  h,
int  c,
float  alpha 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ resize_image()

image resize_image ( image  im,
int  w,
int  h 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_resize()

void test_resize ( char *  filename)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_image_stb()

image load_image_stb ( char *  filename,
int  channels 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_image_stb_resize()

image load_image_stb_resize ( char *  filename,
int  w,
int  h,
int  c 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_image()

image load_image ( char *  filename,
int  desired_width,
int  desired_height,
int  channels 
)

Load the given image.

If both desired_width and desired_height have been set, then the image will be resized to match those dimensions. Otherwise, specify 0 (zero) to leave the image dimensions unchanged.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_image_color()

image load_image_color ( char *  filename,
int  w,
int  h 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_image_layer()

image get_image_layer ( image  m,
int  l 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_image()

void print_image ( image  m)

◆ collapse_images_vert()

image collapse_images_vert ( image ims,
int  n 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_images_horz()

image collapse_images_horz ( image ims,
int  n 
)
Here is the call graph for this function:

◆ show_image_normalized()

void show_image_normalized ( image  im,
const char *  name 
)
Here is the call graph for this function:

◆ show_images()

void show_images ( image ims,
int  n,
char *  window 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ free_image()

void free_image ( image  m)
Here is the caller graph for this function:

◆ copy_image_from_bytes()

LIB_API void copy_image_from_bytes ( image  im,
char *  pdata 
)

Variable Documentation

◆ check_mistakes

int check_mistakes

◆ colors

float colors[6][3] = { {1,0,1}, {0,0,1},{0,1,1},{0,1,0},{1,1,0},{1,0,0} }