File: modelConvert.m

package info (click to toggle)
opencv 4.5.1%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 268,248 kB
  • sloc: cpp: 969,170; xml: 682,525; python: 36,732; lisp: 30,170; java: 25,155; ansic: 7,927; javascript: 5,643; objc: 2,041; sh: 935; cs: 601; perl: 494; makefile: 145
file content (73 lines) | stat: -rw-r--r-- 2,117 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function modelConvert(model, outname)
%% script for converting Piotr's matlab model into YAML format

outfile = fopen(outname, 'w');

fprintf(outfile, '%%YAML:1.0\n\n');

fprintf(outfile, ['options:\n'...
                  '    numberOfTrees: 8\n'...
                  '    numberOfTreesToEvaluate: 4\n'...
                  '    selfsimilarityGridSize: 5\n'...
                  '    stride: 2\n'...
                  '    shrinkNumber: 2\n'...
                  '    patchSize: 32\n'...
                  '    patchInnerSize: 16\n'...
                  '    numberOfGradientOrientations: 4\n'...
                  '    gradientSmoothingRadius: 0\n'...
                  '    regFeatureSmoothingRadius: 2\n'...
                  '    ssFeatureSmoothingRadius: 8\n'...
                  '    gradientNormalizationRadius: 4\n\n']);

fprintf(outfile, 'childs:\n');
printToYML(outfile, model.child', 0);

fprintf(outfile, 'featureIds:\n');
printToYML(outfile, model.fids', 0);

fprintf(outfile, 'thresholds:\n');
printToYML(outfile, model.thrs', 0);

N = 1000;
fprintf(outfile, 'edgeBoundaries:\n');
printToYML(outfile, model.eBnds, N);

fprintf(outfile, 'edgeBins:\n');
printToYML(outfile, model.eBins, N);

fclose(outfile);
gzip(outname);

end

function printToYML(outfile, A, N)
%% append matrix A to outfile as
%%    - [a11, a12, a13, a14, ..., a1n]
%%    - [a21, a22, a23, a24, ..., a2n]
%%    ...
%%
%% if size(A, 2) == 1, A is printed by N elemnent per row

    if (length(size(A)) ~= 2)
        error('printToYML: second-argument matrix should have two dimensions');
    end

    if (size(A,2) ~= 1)
        for i=1:size(A,1)
            fprintf(outfile, '    - [');
            fprintf(outfile, '%d,', A(i, 1:end-1));
            fprintf(outfile, '%d]\n', A(i, end));
        end
    else
        len = length(A);
        for i=1:ceil(len/N)
            first = (i-1)*N + 1;
             last = min(i*N, len) - 1;

            fprintf(outfile, '    - [');
            fprintf(outfile, '%d,', A(first:last));
            fprintf(outfile, '%d]\n', A(last + 1));
        end
    end
    fprintf(outfile, '\n');
end