SqueezeBrains SDK 1.13
deep_surface_detect.c
Go to the documentation of this file.
1
53#include "../common/common.h"
54
58int main(void)
59{
61 sb_t_info* sb_info = NULL;
62 SB_HANDLE project = NULL;
63 sb_t_roi* roi = NULL;
64 sb_t_image* image = NULL;
65 sb_t_res* res = NULL;
66 sb_t_par par;
67 sb_t_folder* folder = NULL;
68 sb_t_solution_info* solution = NULL;
69 int i;
70
72 printf("Initialize the SqueezeBrains library\n");
73 CHECK_FN_GOTO(sb_init("../sb.lic"));
74
76#if defined(_WIN32)
77 // "../../../win_x64/dl_framework" is the pre-defined relative path between working directory and SB Deep Learning Framework into the installation folder.
78 CHECK_FN_GOTO(sb_init_dl("../../../win_x64/dl_framework"));
79#else
81#endif
82
83 // Print library version.
84 CHECK_FN_GOTO(sb_get_info(&sb_info, 0));
85 printf("sb ver. %s, compiled on %s %s\n", sb_info->version_str, sb_info->compile_date, sb_info->compile_time);
86
88 printf("wait for license...\n");
90
92 CHECK_FN_GOTO(sb_solution_get_info("solution/deep_surface_tutorial." SB_SOLUTION_EXT, &solution));
94 CHECK_FN_GOTO(sb_project_load(&project, "solution/deep_surface_tutorial." SB_SOLUTION_EXT, solution->projects.info[solution->current_project].uuid, SB_PROJECT_MODE_DETECTION_ONLY));
98 CHECK_FN_GOTO(sb_project_get_par(project, &par));
99 // blob parameters
100 par.surface_blob_analysis = 1;
101 par.blob_par.area.min = 10;
102 par.blob_par.merge_area.min = 50;
103 par.blob_par.blob_rle = 1;
104 par.blob_par.blob_contour = 1;
105 par.blob_par.merge_distance = 20;
106 // devices parameters
107 par.devices.type = SB_DEVICE_GPU; // set GPU device
108 par.devices.id[0] = 0; // set the first GPU detected on the machine (with index 0)
109 CHECK_FN_GOTO(sb_project_set_par(project, &par));
110 CHECK_FN_GOTO(sb_folder_load(&folder, "dataset", "png", 1, 0));
111 for (i = 0; i < folder->n; i++)
112 {
114 CHECK_FN_GOTO(sb_image_load(&image, folder->file[i].name));
116 CHECK_FN_GOTO(sb_roi_create(&roi, image->width, image->height));
118 CHECK_FN_GOTO(sb_roi_set_rect(roi, 255, sb_rect(0, 0, image->width, image->height), 0));
120 CHECK_FN_GOTO(sb_project_detection(project, image, roi, NULL, NULL));
122 CHECK_FN_GOTO(sb_project_get_res(project, &res, 0));
123 // Print the results
124 printf("image: %s\n", folder->file[i].fname);
125 printf("\t%d defect blobs found:\n", res->global.surface->blobs->size);
126 for (int j = 0; j < res->global.surface->blobs->size; ++j)
127 printf("\t\tul=(%d,%d), size=(%d,%d), area=%d\n", res->global.surface->blobs->blob[j].rect.x, res->global.surface->blobs->blob[j].rect.y, res->global.surface->blobs->blob[j].rect.width, res->global.surface->blobs->blob[j].rect.height, res->global.surface->blobs->blob[j].area);
128
129 // Destroy the handles.
133 }
134
135FnExit:
137 sb_destroy_info(&sb_info);
138 sb_project_destroy(&project);
139 sb_image_destroy(&image);
140 sb_roi_destroy(&roi);
141 sb_res_destroy(&res);
142 sb_folder_destroy(&folder);
143 sb_solution_destroy_info(&solution);
144
146 printf("Release SqueezeBrains library\n");
147 sb_release();
148
149 printf("Press ENTER to terminate\n");
150 getchar();
151 return (int)err;
152}
EXTERN_C sb_t_err wait_license(void)
The functions wait until the license status is active.
Definition: common.c:11
#define CHECK_FN_GOTO(function)
Definition: common.h:34
int main(void)
sb_t_err
Errors code enum.
Definition: sb.h:5541
@ SB_ERR_NONE
No errors.
Definition: sb.h:5542
sb_t_err sb_folder_destroy(sb_t_folder **folder)
Frees all the resources of the sb_t_folder structure.
sb_t_err sb_folder_load(sb_t_folder **const f, const char *const path, const char *const ext, int sort, int verbosity)
Creates the list of the name of the files in a specified folder.
sb_t_err sb_destroy_info(sb_t_info **const info)
Destroys the structure.
sb_t_err sb_init_dl(const char *const search_path)
Initialize the Deep Learning library.
sb_t_err sb_release(void)
Releases all the resources allocates in the library.
sb_t_err sb_init(const char *const license_file)
Initializes the SB library.
void * SB_HANDLE
HANDLE definition.
Definition: sb.h:6042
sb_t_err sb_get_info(sb_t_info **const info, int gpu_info)
The function gets information about the sb library and the available computational devices.
@ SB_DEVICE_GPU
GPU device.
Definition: sb.h:6109
SB_INLINE sb_t_rect sb_rect(int x, int y, int width, int height)
Inline constructor of structure sb_t_rect.
Definition: sb.h:5918
sb_t_err sb_image_destroy(sb_t_image **const pimg)
Destroys the image.
sb_t_err sb_image_load(sb_t_image **const img, const char *const file)
Loads an image from a file.
sb_t_err sb_project_set_par(SB_HANDLE handle, const sb_t_par *const par)
Sets the parameters structure into the project handle.
sb_t_err sb_project_get_par(SB_HANDLE handle, sb_t_par *const par)
Retrieves the project parameters structure.
sb_t_err sb_project_load(SB_HANDLE *phandle, const char *const solution_file, const char *const project_uuid, sb_t_project_mode mode)
Loads an existing project from file.
sb_t_err sb_project_detection(SB_HANDLE handle, const sb_t_image *const img, const sb_t_roi *const roi, const sb_t_roi *const roi_defects, const sb_t_samples *const samples)
Detection function.
sb_t_err sb_project_get_res(SB_HANDLE handle, sb_t_res **const res, int details)
Retrieves the results of the last elaborated image.
sb_t_err sb_project_destroy(SB_HANDLE *phandle)
Frees all the resources of the project handle.
@ SB_PROJECT_MODE_DETECTION_ONLY
Load/save the minimum module information to allow detection.
Definition: sb.h:9026
sb_t_err sb_res_destroy(sb_t_res **const res)
Destroys the module results structure.
sb_t_err sb_roi_set_rect(sb_t_roi *const roi, unsigned char gl, sb_t_rect rect, int reset_roi)
Sets a rectangular ROI.
sb_t_err sb_roi_create(sb_t_roi **const roi, int width, int height)
Creates a ROI.
sb_t_err sb_roi_destroy(sb_t_roi **const roi)
Destroys the ROI.
sb_t_err sb_solution_get_info(const char *const solution_file, sb_t_solution_info **const solution)
Returns the information contained in the solution_file.
#define SB_SOLUTION_EXT
Extension of the SqueezeBrains solution file.
Definition: sb.h:8925
sb_t_err sb_solution_destroy_info(sb_t_solution_info **const solution)
Destroys the structure of the solution information.
int blob_contour
Set to 1 if you want the contour of each blob.
Definition: sb.h:8587
sb_t_range area
Range of area, value in pixel.
Definition: sb.h:8574
sb_t_range merge_area
Range of area after merge, value in pixel. Used only if sb_t_blob_par::merge_distance is greater than...
Definition: sb.h:8604
int blob_rle
Set to 1 if you want the rle of each blob.
Definition: sb.h:8582
int merge_distance
Blobs with a distance inferior or equal to the value are merged together.
Definition: sb.h:8603
sb_t_rect rect
Bounding box of the blob.
Definition: sb.h:8656
int area
Area of the blob, number of the pixel.
Definition: sb.h:8653
sb_t_blob * blob
Array of the blobs.
Definition: sb.h:8724
int size
Number of blobs, ie number of elements of the array sb_t_blobs::blob .
Definition: sb.h:8723
int id[SB_DEVICES_MAX_NUMBER]
Identifier of the devices to be used.
Definition: sb.h:10108
sb_t_device_type type
Device type.
Definition: sb.h:10099
char name[256]
Name of the file included of path.
Definition: sb.h:6578
char * fname
Name of file excluded the path.
Definition: sb.h:6579
defines the list of the file in a folder.
Definition: sb.h:6586
sb_t_file * file
Array of files.
Definition: sb.h:6587
int n
Number of elements of the array file.
Definition: sb.h:6588
Defines an image.
Definition: sb.h:7310
int width
Width, in pixel, of the image.
Definition: sb.h:7314
int height
Height, in pixel, of the image.
Definition: sb.h:7315
General information about sb library and computing devices like CPU and GPUs.
Definition: sb.h:6180
char compile_time[32]
String with the compilation time of the sb library.
Definition: sb.h:6184
char compile_date[32]
String with the compilation date of the sb library.
Definition: sb.h:6183
char version_str[16]
String with the version of the sb library.
Definition: sb.h:6182
Project parameters.
Definition: sb.h:10647
int surface_blob_analysis
Enables the blob analysis.
Definition: sb.h:10751
sb_t_devices_par devices
Devices used for detection.
Definition: sb.h:10714
sb_t_blob_par blob_par
Surface blob analysis parameters.
Definition: sb.h:10707
char uuid[SB_PROJECT_UUID_LEN]
Project UUID.
Definition: sb.h:8901
sb_t_project_info * info
Array of solution project information.
Definition: sb.h:8911
int min
minimum value
Definition: sb.h:5802
int y
y coordinate of the upper left corner of the rectangle
Definition: sb.h:5821
int x
x coordinate of the upper left corner of the rectangle
Definition: sb.h:5820
int width
width of the rectangle
Definition: sb.h:5822
int height
height of the rectangle
Definition: sb.h:5823
sb_t_surface_res * surface
Surface model analysis result.
Definition: sb.h:11135
Results of detection.
Definition: sb.h:11276
sb_t_res_model global
Global results.
Definition: sb.h:11310
Defines a roi.
Definition: sb.h:7730
Solution info structure.
Definition: sb.h:8931
sb_t_projects_info projects
Array of the projects info.
Definition: sb.h:8932
int current_project
Index of the current project in the projects array.
Definition: sb.h:8933
sb_t_blobs * blobs
Defects blobs extracted.
Definition: sb.h:11020