()
| 167 | } |
| 168 | |
| 169 | function render() { |
| 170 | var canvas = document.querySelector('#image_canvas'); |
| 171 | var ctx = canvas.getContext('2d'); |
| 172 | |
| 173 | canvas.style.width='100%'; |
| 174 | canvas.style.height='94%'; |
| 175 | canvas.width = canvas.offsetWidth; |
| 176 | canvas.height = canvas.offsetHeight; |
| 177 | |
| 178 | var scale = Math.min(canvas.width / img.width, canvas.height / img.height); |
| 179 | |
| 180 | var im_x = canvas.width/2-img.width*scale/2; |
| 181 | var im_y = canvas.height/2-img.height*scale/2; |
| 182 | ctx.translate(im_x, im_y); |
| 183 | ctx.drawImage(img, 0, 0, img.width * scale, img.height * scale); |
| 184 | |
| 185 | var startIdx = Math.min(dets.length, settings.top_k)-1; |
| 186 | var endIdx = (settings.show_one ? startIdx : 0); |
| 187 | |
| 188 | // Draw masks behind everything |
| 189 | for (var i = startIdx; i >= endIdx; i--) { |
| 190 | if (settings.show_mask) { |
| 191 | var mask = masks[i]; |
| 192 | if (typeof mask == 'undefined') { |
| 193 | masks[i] = load_RLE(dets[i].mask, hexToRgb(colors[i % colors.length])); |
| 194 | masks[i].onload = function() { render(); } |
| 195 | } else { |
| 196 | ctx.globalAlpha = settings.mask_alpha / 255; |
| 197 | ctx.drawImage(mask, 0, 0, mask.width * scale, mask.height * scale); |
| 198 | ctx.globalAlpha = 1; |
| 199 | } |
| 200 | } |
| 201 | } |
| 202 | |
| 203 | for (var i = startIdx; i >= endIdx; i--) { |
| 204 | ctx.strokeStyle = colors[i % colors.length]; |
| 205 | ctx.fillStyle = ctx.strokeStyle; |
| 206 | ctx.lineWidth = 4; |
| 207 | ctx.font = settings.font_height + 'px sans-serif'; |
| 208 | |
| 209 | var x = dets[i].bbox[0] * scale; |
| 210 | var y = dets[i].bbox[1] * scale; |
| 211 | var w = dets[i].bbox[2] * scale; |
| 212 | var h = dets[i].bbox[3] * scale; |
| 213 | |
| 214 | if (settings.show_bbox) { |
| 215 | ctx.strokeRect(x, y, w, h); |
| 216 | ctx.stroke(); |
| 217 | } |
| 218 | |
| 219 | var text_array = [] |
| 220 | if (settings.show_class) |
| 221 | text_array.push(dets[i].category); |
| 222 | if (settings.show_score) |
| 223 | text_array.push(Math.round(dets[i].score * 1000) / 1000); |
| 224 | |
| 225 | if (text_array.length > 0) { |
| 226 | var text = text_array.join(' '); |
no test coverage detected