Spaces:
Runtime error
Runtime error
| let capture; | |
| let font; | |
| let segmenter; | |
| let people; | |
| function setup() { | |
| createCanvas(640, 480); | |
| capture = createCapture(VIDEO, captureLoaded); | |
| background(255); | |
| } | |
| function captureLoaded() { | |
| console.log("capture loaded..."); | |
| initModel(); | |
| } | |
| async function initModel() { | |
| const model = bodySegmentation.SupportedModels.MediaPipeSelfieSegmentation; // or 'BodyPix' | |
| const segmenterConfig = { | |
| runtime: 'tfjs', // or 'tfjs' | |
| modelType: 'general' // or 'landscape' | |
| }; | |
| segmenter = await bodySegmentation.createSegmenter(model, segmenterConfig); | |
| } | |
| async function getPose() { | |
| people = await segmenter.segmentPeople(capture.elt); | |
| } | |
| function draw() { | |
| background(0,1); | |
| if (segmenter) { | |
| getPose(); | |
| getPose2(); | |
| } | |
| drawPoseInfo(); | |
| } | |
| function drawPoseInfo() { | |
| noStroke(); | |
| fill(255, 0, 0, 128); | |
| if (people && people.length > 0) { | |
| //let img = people[0].mask.toImageData().ImageData; | |
| //console.log(img) | |
| /* | |
| for (var i = 0; i < people.length; i++) { | |
| for (var j = 0; j<people[i].keypoints.length; j++) { | |
| if (people[i].keypoints[j].score > 0.1) { | |
| let posX = width-int(people[i].keypoints[j].x); | |
| let posY = height-int(people[i].keypoints[j].y); | |
| circle(posX, posY, 10); | |
| } | |
| } | |
| }*/ | |
| } | |
| } | |
| function keyPressed() { | |
| noLoop(); | |
| } | |
| async function getPose2(){ | |
| const img = capture.elt; | |
| const segmentation = await segmenter.segmentPeople(img); | |
| // The mask image is an binary mask image with a 1 where there is a person and | |
| // a 0 where there is not. | |
| const coloredPartImage = await bodySegmentation.toBinaryMask(segmentation); | |
| const opacity = 0.7; | |
| const flipHorizontal = false; | |
| const maskBlurAmount = 0; | |
| const canvas = document.getElementById('canvas'); | |
| // Draw the mask image on top of the original image onto a canvas. | |
| // The colored part image will be drawn semi-transparent, with an opacity of | |
| // 0.7, allowing for the original image to be visible under. | |
| bodySegmentation.drawMask( | |
| canvas, img, coloredPartImage, opacity, maskBlurAmount, | |
| flipHorizontal); | |
| } |