This repository has been archived by the owner on Oct 14, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 32
/
Coco.pde
83 lines (69 loc) · 2.66 KB
/
Coco.pde
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
74
75
76
77
78
79
80
81
82
83
// Copyright (C) 2019 Runway ML Examples
//
// This file is part of Runway ML Examples.
//
// Runway-Examples is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Runway-Examples is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Runway. If not, see <http://www.gnu.org/licenses/>.
//
// ===========================================================================
// RUNWAYML
// www.runwayml.com
// COCO-SSD StreetView Demo:
// Loads a csv file exported by Runway
// Made by jpyepez
class Coco {
Table cocoTable;
TableRow lookup;
TableRow current;
int maxIdx;
Coco(int maxIdx_) {
// Coco SSD data
cocoTable = loadTable("coco_ssd.csv", "header, csv");
maxIdx = maxIdx_;
}
void display(float playhead) {
// find current time marker on the table
for( TableRow row : cocoTable.rows() ) {
if(row.getFloat("time") >= playhead) {
current = row;
break;
}
}
// parse table and draw bounding boxes
for(int i = 0; i < maxIdx; i++) {
if(!Float.isNaN(current.getFloat("results."+i+".bbox.0"))) {
float boxX = current.getFloat("results."+i+".bbox.0");
float boxY = current.getFloat("results."+i+".bbox.1");
float boxW = current.getFloat("results."+i+".bbox.2");
float boxH = current.getFloat("results."+i+".bbox.3");
String boxLabel = current.getString("results."+i+".class");
float boxScore = current.getFloat("results."+i+".score");
// draw bbox with table data
drawBBox(boxX, boxY, boxW, boxH, boxLabel, boxScore);
}
}
}
// drawing bbox function
void drawBBox(float x, float y, float w, float h, String label, float score) {
strokeWeight(5);
stroke(96, 255, 255, 200);
fill(96, 255, 255, 32);
rect(x*movieScale, y*movieScale, w*movieScale, h*movieScale, 5);
textSize(14);
float textW = textWidth(label);
fill(96, 255, 255);
rect(x*movieScale, y*movieScale-g.textSize, textW, g.textSize);
fill(0, 64, 64);
text(label, x*movieScale, y*movieScale-2);
}
}