{
  "name": "Object Detect",
  "id": "ide:e722add0-0737-424e-b81a-0014df946558",
  "module": {
    "kind": "javascript",
    "id": "ide:e722add0-0737-424e-b81a-0014df946558",
    "name": "Object Detect",
    "inputs": [
      {
        "id": "image",
        "label": "image",
        "type": "frame"
      }
    ],
    "outputs": [
      {
        "id": "detections",
        "label": "detections",
        "type": "array[object]"
      }
    ],
    "setup": "async function setup(_inputs, state) {\n    state.ready = false;\n    const mod = await import ('https://esm.sh/@mediapipe/tasks-vision')\n    const {FilesetResolver, ObjectDetector} = mod.default ?? mod;\n    state.vision = await FilesetResolver.forVisionTasks(\n      \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm\"\n    )\n    state.gestureRecognizer = await ObjectDetector.createFromOptions(state.vision, {\n      baseOptions: {\n        modelAssetPath: \"https://storage.googleapis.com/mediapipe-tasks/object_detector/efficientdet_lite0_uint8.tflite\"\n      },\n      scoreThreshold: 0.5,\n      runningMode: \"IMAGE\"\n    }) \n\n  \n   state.recognize = (image)=> {\n     return new Promise(resolve => {\n       setTimeout(() => {\n         resolve(state.gestureRecognizer.detect(image));\n       }, 0)\n     })\n   }\n  \n     state.ready = true\n  state.detections = []\n  state.looking = false\n  console.log(\"ready\")\n  \n\n  }",
    "update": "function update(inputs, state) {\n\n  if(inputs.image && state.ready){\n    if(!state.looking){\n      state.looking = true\n      state.recognize(inputs.image).then((res) => {\n        state.looking = false\n        state.detections = res.detections\n     })\n    }\n  }\n  return state\n  }",
    "teardown": "function teardown(state) {\n\n  }",
    "enableFrameReadback": true
  }
}
