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(); }
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; } }
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(); }
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(); }
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)); }
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); }
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); }