Exemplo n.º 1
0
        static void Main()
        {
            Console.WriteLine("FaceONNX: Face semantic segmentation");
            var files = Directory.GetFiles(@"..\..\..\images");
            var path  = @"..\..\..\results";

            using var faceDetector = new FaceDetector();
            using var faceParser   = new FaceParser();
            Directory.CreateDirectory(path);

            Console.WriteLine($"Processing {files.Length} images");

            foreach (var file in files)
            {
                using var bitmap = new Bitmap(file);
                var filename = Path.GetFileName(file);
                var faces    = faceDetector.Forward(bitmap);
                Console.WriteLine($"Image: [{filename}] --> detected [{faces.Length}] faces");

                foreach (var face in faces)
                {
                    var labels = faceParser.Forward(bitmap, face);

                    foreach (var label in labels)
                    {
                        using var segmentated = FaceParser.ToBitmap(label);
                        segmentated.Save(Path.Combine(path, filename));
                    }
                }
            }

            Console.WriteLine("Done.");
            Console.ReadKey();
        }
Exemplo n.º 2
0
        private void ParseLine(string keyword, string data)
        {
            switch (keyword)
            {
            case "v":
                if (isLastLineAFace)
                {
                    graphObject.Groups.Add(group);
                    group           = new Group();
                    isLastLineAFace = false;
                }
                group.Vertices.Add(VertexParser.Parse(data));
                break;

            case "vt":
                group.VertexTextures.Add(VertexTextureParser.Parse(data));
                break;

            case "vn":
                group.VertexNormals.Add(VertexNormalParser.Parse(data));
                break;

            case "f":
                group.Faces.Add(FaceParser.Parse(data));
                isLastLineAFace = true;
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
        public void CanParseStyle7()
        {
            WavefrontObject wavefrontObject = new WavefrontObject();

            wavefrontObject.Vertices.Add(new Vector3());
            wavefrontObject.Normals.Add(new Vector3());
            const string line   = "f 1 1 1";
            FaceParser   parser = (FaceParser) new ObjLineParserFactory(wavefrontObject).GetLineParser(line);

            parser.Parse();
        }
Exemplo n.º 4
0
        public void CanParseStyle6()
        {
            // Arrange.
            WavefrontObject wavefrontObject = new WavefrontObject();

            wavefrontObject.Vertices.Add(new Vertex());
            wavefrontObject.Normals.Add(new Vertex());
            const string line   = "f 1/1 1/1 1/1 1/1";
            FaceParser   parser = (FaceParser) new ObjLineParserFactory(wavefrontObject).GetLineParser(line);

            // Act.
            parser.Parse();
        }
Exemplo n.º 5
0
        public ObjLoader Create(MaterialStreamProvider materialStreamProvider)
        {
            var dataStore     = new DataStore(_name);
            var faceParser    = new FaceParser(dataStore);
            var groupParser   = new GroupParser(dataStore);
            var normalParser  = new NormalParser(dataStore);
            var textureParser = new TextureParser(dataStore);
            var vertexParser  = new VertexParser(dataStore);

            var materialLibraryLoader       = new MaterialLibraryLoader(dataStore);
            var materialLibraryLoaderFacade = new MaterialLibraryLoaderFacade(materialLibraryLoader, materialStreamProvider);
            var materialLibraryParser       = new MaterialLibraryParser(materialLibraryLoaderFacade);
            var useMaterialParser           = new UseMaterialParser(dataStore);

            return(new ObjLoader(dataStore, faceParser, groupParser, normalParser, textureParser, vertexParser, materialLibraryParser, useMaterialParser));
        }
        public IWavefrontObjLoader Create(IMaterialStreamProvider materialStreamProvider)
        {
            var dataStore = new DataStore();

            var faceParser    = new FaceParser(dataStore);
            var groupParser   = new GroupParser(dataStore);
            var normalParser  = new VertexNormalParser(dataStore);
            var textureParser = new TextureCoordinateParser(dataStore);
            var vertexParser  = new GeometricVertexParser(dataStore);

            var materialLibraryLoader       = new MaterialLibraryLoader(dataStore);
            var materialLibraryLoaderFacade = new MaterialLibraryLoaderFacade(materialLibraryLoader, materialStreamProvider);
            var materialLibraryParser       = new MaterialLibraryParser(materialLibraryLoaderFacade);
            var useMaterialParser           = new UseMaterialParser(dataStore);

            return(new WavefrontObjLoader(dataStore, faceParser, groupParser, normalParser, textureParser, vertexParser, materialLibraryParser, useMaterialParser));
        }
Exemplo n.º 7
0
        public void SetUp()
        {
            _textureDataStore = new DataStore();

            _faceParser                = new FaceParser(_textureDataStore);
            _groupParser               = new GroupParser(_textureDataStore);
            _normalParser              = new NormalParser(_textureDataStore);
            _textureParser             = new TextureParser(_textureDataStore);
            _vertexParser              = new VertexParser(_textureDataStore);
            _materialStreamProviderSpy = new MaterialStreamProviderSpy();
            _materialStreamProviderSpy.StreamToReturn = CreateMemoryStreamFromString(MaterialLibraryString);

            _materialLibraryLoader       = new MaterialLibraryLoader(_textureDataStore);
            _materialLibraryLoaderFacade = new MaterialLibraryLoaderFacade(_materialLibraryLoader, _materialStreamProviderSpy);
            _materialLibraryParser       = new MaterialLibraryParser(_materialLibraryLoaderFacade);
            _useMaterialParser           = new UseMaterialParser(_textureDataStore);

            _loader = new Loader.Loaders.ObjLoader(_textureDataStore, _faceParser, _groupParser, _normalParser, _textureParser, _vertexParser, _materialLibraryParser, _useMaterialParser);
        }
Exemplo n.º 8
0
 public ObjLoader(
     DataStore dataStore,
     FaceParser faceParser,
     GroupParser groupParser,
     NormalParser normalParser,
     TextureParser textureParser,
     VertexParser vertexParser,
     MaterialLibraryParser materialLibraryParser,
     UseMaterialParser useMaterialParser)
 {
     _dataStore = dataStore;
     SetupTypeParsers(
         vertexParser,
         faceParser,
         normalParser,
         textureParser,
         groupParser,
         materialLibraryParser,
         useMaterialParser);
 }
        public void SetUp()
        {
            _faceGroupSpy = new FaceGroupSpy();

            _faceParser = new FaceParser(_faceGroupSpy);
        }