Ejemplo n.º 1
0
    public override Status StartRun(SidePacket sidePacket)
    {
        outputStreamPoller = graph.AddOutputStreamPoller <ImageFrame>(outputStream).ConsumeValue();
        outputPacket       = new ImageFramePacket();

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 2
0
    protected virtual IEnumerator RunGraph()
    {
        var webCamScreenController = webCamScreen.GetComponent <WebCamScreenController>();

        graph.Initialize();

        sidePacket = new SidePacket();
        sidePacket.Insert("focal_length_pixel", new FloatPacket(webCamScreenController.FocalLengthPx()));

        graph.StartRun(sidePacket).AssertOk();

        while (true)
        {
            yield return(new WaitForEndOfFrame());

            if (!webCamScreenController.isPlaying())
            {
                Debug.LogWarning("WebCam is not working");
                break;
            }

            var pixelData = webCamScreenController.GetPixels32();
            var width     = webCamScreenController.Width();
            var height    = webCamScreenController.Height();

            graph.PushColor32(pixelData, width, height);
            graph.RenderOutput(webCamScreenController, pixelData);
        }
    }
Ejemplo n.º 3
0
    public Status StartRun(SidePacket sidePacket)
    {
        outputStreamPoller = graph.AddOutputStreamPoller <string>(outputStream).ConsumeValue();
        outputPacket       = new StringPacket();

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 4
0
    public override Status StartRun(SidePacket sidePacket)
    {
        outputStreamPoller = graph.AddOutputStreamPoller <GpuBuffer>(outputStream).ConsumeValue();
        outputPacket       = new GpuBufferPacket();

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 5
0
    public override Status StartRun()
    {
        handLandmarksStreamPoller = graph.AddOutputStreamPoller <List <NormalizedLandmarkList> >(handLandmarksStream).ConsumeValueOrDie();
        handLandmarksPacket       = new NormalizedLandmarkListVectorPacket();

        handednessStreamPoller = graph.AddOutputStreamPoller <List <ClassificationList> >(handednessStream).ConsumeValueOrDie();
        handednessPacket       = new ClassificationListVectorPacket();

        palmDetectionsStreamPoller = graph.AddOutputStreamPoller <List <Detection> >(palmDetectionsStream).ConsumeValueOrDie();
        palmDetectionsPacket       = new DetectionVectorPacket();

        palmRectsStreamPoller = graph.AddOutputStreamPoller <List <NormalizedRect> >(palmRectsStream).ConsumeValueOrDie();
        palmRectsPacket       = new NormalizedRectVectorPacket();

        handLandmarksPresenceStreamPoller = graph.AddOutputStreamPoller <bool>(handLandmarksPresenceStream).ConsumeValueOrDie();
        handLandmarksPresencePacket       = new BoolPacket();

        palmDetectionsPresenceStreamPoller = graph.AddOutputStreamPoller <bool>(palmDetectionsPresenceStream).ConsumeValueOrDie();
        palmDetectionsPresencePacket       = new BoolPacket();

        sidePacket = new SidePacket();
        sidePacket.Emplace("num_hands", new IntPacket(2));

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 6
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource);
            return(sidePacket);
        }
    public override Status StartRun(Texture texture)
    {
        Debug.Log("This graph is for testing official examples. You can customize the graph by editing `official_demo_android.txt` (default is `hand_tracking_mobile.pbtxt`)");

        sidePacket = new SidePacket();
        sidePacket.Emplace("num_hands", new IntPacket(2));

#if UNITY_ANDROID
        var       glTextureName = texture.GetNativeTexturePtr();
        var       textureWidth  = texture.width;
        var       textureHeight = texture.height;
        GpuBuffer gpuBuffer     = null;

        gpuHelper.RunInGlContext(() => {
            var glContext       = GlContext.GetCurrent();
            var glTextureBuffer = new GlTextureBuffer((UInt32)glTextureName, textureWidth, textureHeight,
                                                      GpuBufferFormat.kBGRA32, OnReleaseDestinationTexture, glContext);
            gpuBuffer = new GpuBuffer(glTextureBuffer);
            return(Status.Ok());
        }).AssertOk();

        outputPacket = new GpuBufferPacket(gpuBuffer);
        sidePacket.Emplace(destinationBufferName, outputPacket);
#endif

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 8
0
    public override Status StartRun(SidePacket sidePacket)
    {
        outputDetectionsStreamPoller = graph.AddOutputStreamPoller <List <Detection> >(outputDetectionsStream).ConsumeValue();
        outputDetectionsPacket       = new DetectionVectorPacket();

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 9
0
 public void Size_ShouldReturnZero_When_Initialized()
 {
     using (var sidePacket = new SidePacket())
     {
         Assert.AreEqual(0, sidePacket.size);
     }
 }
Ejemplo n.º 10
0
    public override Status StartRun(Texture texture)
    {
        if (!IsGpuEnabled())
        {
            return(Status.FailedPrecondition("InstantMotionTracking is not supported on CPU"));
        }

        stopwatch.Start();
        ResetSticker();
        imuRotationMatrix = new float[] { 0, 0, 1, 1, 0, 0, 0, 1, 0 };

        graph.ObserveOutputStream("asset_3d_matrices", MatrixCallback).AssertOk();

        sidePacket = new SidePacket();
        sidePacket.Emplace("vertical_fov_radians", new FloatPacket(GetVerticalFovRadians()));
        sidePacket.Emplace("aspect_ratio", new FloatPacket(3.0f / 4.0f));

        sidePacket.Emplace("texture_3d", new ImageFramePacket(GetImageFrameFromImage(texture3dAsset)));
        sidePacket.Emplace("asset_3d", new StringPacket("robot.obj.bytes"));

#if UNITY_ANDROID && !UNITY_EDITOR
        SetupOutputPacket(texture);
        sidePacket.Emplace(destinationBufferName, outputPacket);

        return(graph.StartRun(sidePacket));
#else
        return(StartRun());
#endif
    }
Ejemplo n.º 11
0
        public void Clear_ShouldDoNothing_When_SizeIsZero()
        {
            var sidePacket = new SidePacket();

            sidePacket.Clear();

            Assert.AreEqual(sidePacket.size, 0);
        }
Ejemplo n.º 12
0
        public void Erase_ShouldDoNothing_When_KeyDoesNotExist()
        {
            var sidePacket = new SidePacket();

            sidePacket.Erase("value");

            Assert.AreEqual(sidePacket.size, 0);
        }
Ejemplo n.º 13
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource);
            sidePacket.Emplace("model_type", new IntPacket((int)modelType));

            return(sidePacket);
        }
Ejemplo n.º 14
0
        public void Clear_ShouldDoNothing_When_SizeIsZero()
        {
            using (var sidePacket = new SidePacket())
            {
                sidePacket.Clear();

                Assert.AreEqual(0, sidePacket.size);
            }
        }
Ejemplo n.º 15
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource, true);
            sidePacket.Emplace("num_hands", new IntPacket(maxNumHands));

            return(sidePacket);
        }
Ejemplo n.º 16
0
        public void Erase_ShouldEraseKey_When_KeyExists()
        {
            var sidePacket = new SidePacket();

            sidePacket.Emplace("value", new BoolPacket(true));
            Assert.AreEqual(sidePacket.size, 1);

            sidePacket.Erase("value");
            Assert.AreEqual(sidePacket.size, 0);
        }
Ejemplo n.º 17
0
        public void Erase_ShouldDoNothing_When_KeyDoesNotExist()
        {
            using (var sidePacket = new SidePacket())
            {
                var count = sidePacket.Erase("value");

                Assert.AreEqual(0, sidePacket.size);
                Assert.AreEqual(0, count);
            }
        }
Ejemplo n.º 18
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource);
            sidePacket.Emplace("model_complexity", new IntPacket((int)modelComplexity));
            sidePacket.Emplace("smooth_landmarks", new BoolPacket(smoothLandmarks));

            return(sidePacket);
        }
Ejemplo n.º 19
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource);
            sidePacket.Emplace("allowed_labels", new StringPacket(GetAllowedLabels(category)));
            sidePacket.Emplace("max_num_objects", new IntPacket(maxNumObjects));

            return(sidePacket);
        }
Ejemplo n.º 20
0
    public override Status StartRun(SidePacket sidePacket)
    {
        landmarkStreamPoller         = graph.AddOutputStreamPoller <List <Landmark[]> >(landmarkStream).ConsumeValue();
        landmarkPresenceStreamPoller = graph.AddOutputStreamPoller <bool>(landmarkPresenceStream).ConsumeValue();

        landmarkListPacket     = new NormalizedLandmarkListVectorPacket();
        landmarkPresencePacket = new BoolPacket();

        return(graph.StartRun(sidePacket));
    }
    public override Status StartRun()
    {
        Debug.Log("This graph is for testing official examples. You can customize the graph by editing `official_demo_cpu.txt` (default is `hand_tracking_desktop.pbtxt`)");

        graph.ObserveOutputStream <ImageFramePacket, ImageFrame>(outputStream, OutputVideoCallback, out outputVideoCallbackHandle).AssertOk();

        sidePacket = new SidePacket();
        sidePacket.Emplace("num_hands", new IntPacket(2));

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 22
0
        SidePacket BuildSidePacket(ImageSource imageSource)
        {
            var sidePacket = new SidePacket();

            SetImageTransformationOptions(sidePacket, imageSource);
            var outputRotation = imageSource.isHorizontallyFlipped ? imageSource.rotation.Reverse() : imageSource.rotation;

            sidePacket.Emplace("output_rotation", new IntPacket((int)outputRotation));

            return(sidePacket);
        }
Ejemplo n.º 23
0
        public void Clear_ShouldClearAllKeys_When_SizeIsNotZero()
        {
            var sidePacket = new SidePacket();

            sidePacket.Emplace("flag", new BoolPacket(true));
            sidePacket.Emplace("value", new FloatPacket(1.0f));
            Assert.AreEqual(sidePacket.size, 2);

            sidePacket.Clear();
            Assert.AreEqual(sidePacket.size, 0);
        }
Ejemplo n.º 24
0
        public void size_ShouldReturnSize_When_AfterPacketsAreEmplaced()
        {
            var sidePacket  = new SidePacket();
            var flagPacket  = new BoolPacket(true);
            var valuePacket = new FloatPacket(1.0f);

            sidePacket.Emplace("flag", flagPacket);
            sidePacket.Emplace("value", valuePacket);

            Assert.AreEqual(sidePacket.size, 2);
        }
Ejemplo n.º 25
0
        public void Initialize_ShouldReturnInternalError_When_CalledWithConfigAndSidePacket_And_ConfigIsSet()
        {
            var graph      = new CalculatorGraph(validConfigText);
            var config     = CalculatorGraphConfig.Parser.ParseFromTextFormat(validConfigText);
            var sidePacket = new SidePacket();

            sidePacket.Emplace("flag", new BoolPacket(true));
            var status = graph.Initialize(config, sidePacket);

            Assert.AreEqual(status.code, Status.StatusCode.Internal);
        }
Ejemplo n.º 26
0
        public void Initialize_ShouldReturnOk_When_CalledWithConfigAndSidePacket_And_ConfigIsNotSet()
        {
            var graph      = new CalculatorGraph();
            var config     = CalculatorGraphConfig.Parser.ParseFromTextFormat(validConfigText);
            var sidePacket = new SidePacket();

            sidePacket.Emplace("flag", new BoolPacket(true));
            var status = graph.Initialize(config, sidePacket);

            Assert.True(status.ok);
        }
Ejemplo n.º 27
0
        public void Erase_ShouldEraseKey_When_KeyExists()
        {
            using (var sidePacket = new SidePacket())
            {
                sidePacket.Emplace("value", new BoolPacket(true));
                Assert.AreEqual(1, sidePacket.size);

                var count = sidePacket.Erase("value");
                Assert.AreEqual(0, sidePacket.size);
                Assert.AreEqual(1, count);
            }
        }
Ejemplo n.º 28
0
    public override Status StartRun(Texture texture)
    {
        Debug.Log("This graph is for testing official examples. You can customize the graph by editing `official_demo_dekstop_gpu.txt` (default is `hand_tracking_mobile.pbtxt`)");

        outputStreamPoller = graph.AddOutputStreamPoller <ImageFrame>(outputStream).ConsumeValueOrDie();
        outputPacket       = new ImageFramePacket();

        sidePacket = new SidePacket();
        sidePacket.Emplace("num_hands", new IntPacket(2));

        return(graph.StartRun(sidePacket));
    }
Ejemplo n.º 29
0
        public void Emplace_ShouldIgnoreValue_When_KeyExists()
        {
            using (var sidePacket = new SidePacket())
            {
                var oldValuePacket = new FloatPacket(1.0f);
                sidePacket.Emplace("value", oldValuePacket);
                Assert.AreEqual(1.0f, sidePacket.At <FloatPacket, float>("value").Get());

                var newValuePacket = new FloatPacket(2.0f);
                sidePacket.Emplace("value", newValuePacket);
                Assert.AreEqual(1.0f, sidePacket.At <FloatPacket, float>("value").Get());
            }
        }
 public void ValidateRequiredSidePackets_ShouldReturnInvalidArgumentError_When_TheConfigRequiresSidePackets_And_SidePacketIsEmpty()
 {
     using (var config = new ValidatedGraphConfig())
     {
         config.Initialize(CalculatorGraphConfig.Parser.ParseFromTextFormat(_ObjectronConfigText)).AssertOk();
         using (var sidePacket = new SidePacket())
         {
             using (var status = config.ValidateRequiredSidePackets(sidePacket))
             {
                 Assert.AreEqual(Status.StatusCode.InvalidArgument, status.Code());
             }
         }
     }
 }