コード例 #1
0
        public IEnumerator Keypoint_FullyOccluded_WithIncludeOccluded_ReportsProperly(
            [Values(KeypointObjectFilter.VisibleAndOccluded, KeypointObjectFilter.All)] KeypointObjectFilter keypointObjectFilter)
        {
            var incoming = new List <List <KeypointLabeler.KeypointEntry> >();
            var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate");
            var texture  = new RenderTexture(1024, 768, 16);

            texture.Create();
            var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
            {
                incoming.Add(data);
            }, texture, keypointObjectFilter);

            CreateFullyOccludedScene(template, cam);

            yield return(null);

            //force all async readbacks to complete
            DestroyTestObject(cam);

            if (texture != null)
            {
                texture.Release();
            }

            var testCase = incoming.Last();

            Assert.AreEqual(1, testCase.Count);

            var t = testCase.First();

            Assert.NotNull(t);
            Assert.AreEqual(1, t.instance_id);
            Assert.AreEqual(1, t.label_id);
            Assert.AreEqual(template.templateID.ToString(), t.template_guid);
            Assert.AreEqual(9, t.keypoints.Length);

            for (var i = 0; i < 8; i++)
            {
                Assert.AreEqual(1, t.keypoints[i].state);
            }

            for (var i = 0; i < 9; i++)
            {
                Assert.AreEqual(i, t.keypoints[i].index);
            }
            Assert.Zero(t.keypoints[8].state);
            Assert.Zero(t.keypoints[8].x);
            Assert.Zero(t.keypoints[8].y);
        }
コード例 #2
0
        public IEnumerator Keypoint_Offscreen_DoesNotReport(
            [Values(KeypointObjectFilter.VisibleAndOccluded, KeypointObjectFilter.Visible)] KeypointObjectFilter keypointObjectFilter)
        {
            var incoming = new List <List <KeypointLabeler.KeypointEntry> >();
            var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate");
            var texture  = new RenderTexture(1024, 768, 16);

            texture.Create();
            var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
            {
                incoming.Add(data);
            }, texture, keypointObjectFilter);

            var cube = TestHelper.CreateLabeledCube(scale: 6, z: -100);

            SetupCubeJoints(cube, template);

            cube.SetActive(true);
            cam.SetActive(true);

            AddTestObjectForCleanup(cam);
            AddTestObjectForCleanup(cube);

            yield return(null);

            //force all async readbacks to complete
            DestroyTestObject(cam);

            if (texture != null)
            {
                texture.Release();
            }

            var testCase = incoming.Last();

            Assert.AreEqual(0, testCase.Count);
        }
コード例 #3
0
        static GameObject SetupCamera(IdLabelConfig config, KeypointTemplate template, Action <int, List <KeypointLabeler.KeypointEntry> > computeListener, RenderTexture renderTexture = null, KeypointObjectFilter keypointObjectFilter = KeypointObjectFilter.Visible)
        {
            var cameraObject = new GameObject();

            cameraObject.SetActive(false);
            var camera = cameraObject.AddComponent <Camera>();

            camera.orthographic  = false;
            camera.fieldOfView   = 60;
            camera.nearClipPlane = 0.3f;
            camera.farClipPlane  = 1000;

            camera.transform.position = new Vector3(0, 0, -10);

            if (renderTexture)
            {
                camera.targetTexture = renderTexture;
            }

            var perceptionCamera = cameraObject.AddComponent <PerceptionCamera>();

            perceptionCamera.captureRgbImages = false;
            var keyPointLabeler = new KeypointLabeler(config, template);

            keyPointLabeler.objectFilter = keypointObjectFilter;
            if (computeListener != null)
            {
                keyPointLabeler.KeypointsComputed += computeListener;
            }

            perceptionCamera.AddLabeler(keyPointLabeler);

            return(cameraObject);
        }