Image-CCV
view release on metacpan or search on metacpan
ccv-src/bin/scdcreate.c view on Meta::CPAN
int dirlen = (base_dir != 0) ? strlen(base_dir) + 1 : 0;
ccv_array_t* posfiles = ccv_array_new(sizeof(ccv_file_info_t), 32, 0);
char* file = (char*)malloc(1024);
size_t len = 1024;
ssize_t read;
while ((read = getline(&file, &len, r0)) != -1)
{
while(read > 1 && isspace(file[read - 1]))
read--;
file[read] = 0;
ccv_file_info_t file_info;
file_info.filename = (char*)ccmalloc(1024);
if (base_dir != 0)
{
strncpy(file_info.filename, base_dir, 1024);
file_info.filename[dirlen - 1] = '/';
}
strncpy(file_info.filename + dirlen, file, 1024 - dirlen);
ccv_array_push(posfiles, &file_info);
}
fclose(r0);
ccv_array_t* hard_mine = (ccv_array_t*)ccv_array_new(sizeof(ccv_file_info_t), 32, 0);
while ((read = getline(&file, &len, r1)) != -1)
{
while(read > 1 && isspace(file[read - 1]))
read--;
file[read] = 0;
ccv_file_info_t file_info;
file_info.filename = (char*)ccmalloc(1024);
if (base_dir != 0)
{
strncpy(file_info.filename, base_dir, 1024);
file_info.filename[dirlen - 1] = '/';
}
strncpy(file_info.filename + dirlen, file, 1024 - dirlen);
ccv_array_push(hard_mine, &file_info);
}
fclose(r1);
free(file);
ccv_scd_train_param_t params = {
.boosting = 10,
.size = ccv_size(48, 48),
.feature = {
.base = ccv_size(8, 8),
.range_through = 4,
.step_through = 4,
},
.stop_criteria = {
.hit_rate = 0.995,
.false_positive_rate = 0.5,
.accu_false_positive_rate = 1e-7,
.auc_crit = 1e-5,
.maximum_feature = 2048,
.prune_stage = 3,
.prune_feature = 4,
},
.weight_trimming = 0.98,
.C = 0.0005,
.grayscale = 0,
};
ccv_scd_classifier_cascade_t* cascade = ccv_scd_classifier_cascade_new(posfiles, hard_mine, negative_count, working_dir, params);
ccv_scd_classifier_cascade_write(cascade, working_dir);
return 0;
}
( run in 1.654 second using v1.01-cache-2.11-cpan-5837b0d9d2c )