# gb28181/viewfacecore architecture

> Architecture diagram of the GitHub repository gb28181/viewfacecore, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gb28181/viewfacecore
- Repository: https://github.com/gb28181/viewfacecore

## Overview

ViewFaceCore is a cross-platform .NET face-analysis library backed by SeetaFace6 through a native bridge. The main workflow accepts an image, converts it to the library’s FaceImage representation, and exposes face detection and downstream analysis such as landmarks, recognition, liveness, quality, tracking, mask detection, and attribute prediction. The graph also shows the native interop layer and optional image-framework and dependency-injection extensions. Feature coverage is based on the README and tree; several feature implementations were not sampled, so uncertain internal call wiring is omitted.

Main entry points: [`src/ViewFaceCore/Native/ViewFaceNative.PInvoke.cs`](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Native/ViewFaceNative.PInvoke.cs) (Native PInvoke), [`src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceCoreHostExtensions.cs`](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceCoreHostExtensions.cs) (Dependency injection), [`src/ViewFaceCore/Core/FaceDetector.cs`](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceDetector.cs) (Face detection), [`src/ViewFaceCore/Core/FaceRecognizer.cs`](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceRecognizer.cs) (Face recognition)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_input["Image input"]
  node_bitmap["Image source"]
  node_faceimage["FaceImage<br/>[FaceImage.cs]"]
  node_skia["SkiaSharp adapter"]
  node_imagesharp["ImageSharp adapter"]
  node_drawing["System.Drawing adapter"]
end

subgraph group_analysis["Face analysis"]
  node_detector["Face detection<br/>[FaceDetector.cs]"]
  node_landmarker["Face landmarks<br/>[FaceLandmarker.cs]"]
  node_recognizer["Face recognition<br/>[FaceRecognizer.cs]"]
  node_antispoof["Liveness detection"]
  node_quality["Face quality<br/>[FaceQuality.cs]"]
  node_tracker["Face tracking<br/>[FaceTracker.cs]"]
  node_mask["Mask detection<br/>[MaskDetector.cs]"]
  node_predictors["Age gender eyes"]
  node_configs["Feature configuration"]
end

subgraph group_interop["Native runtime"]
  node_native["Native PInvoke"]
  node_bridge["C++ bridge<br/>[bridge.cpp]"]
  node_seeta["SeetaFace6 engine"]
end

subgraph group_extensions["Integration extensions"]
  node_di["Dependency injection"]
  node_factory["ViewFace factory<br/>[ViewFaceFactory.cs]"]
  node_async["Async extensions"]
end

node_developer(("Application developer"))

node_developer -->|"provides image"| node_bitmap
node_developer -->|"requests detection"| node_detector
node_bitmap -->|"converts image"| node_skia
node_bitmap -.->|"converts image"| node_imagesharp
node_bitmap -.->|"converts image"| node_drawing
node_skia -->|"creates"| node_faceimage
node_imagesharp -.->|"creates"| node_faceimage
node_drawing -.->|"creates"| node_faceimage
node_detector -->|"invokes detection"| node_native
node_landmarker -->|"invokes marking"| node_native
node_recognizer -->|"extracts features"| node_native
node_antispoof -->|"invokes liveness"| node_native
node_quality -->|"evaluates quality"| node_native
node_tracker -->|"tracks faces"| node_native
node_mask -->|"detects masks"| node_native
node_predictors -->|"predicts attributes"| node_native
node_native -->|"calls exports"| node_bridge
node_bridge -->|"uses engine"| node_seeta
node_di -->|"reads options"| node_configs
node_di -->|"registers services"| node_detector
node_di -->|"registers services"| node_landmarker
node_di -->|"registers services"| node_recognizer
node_di -->|"registers factory"| node_factory
node_async -->|"wraps operations"| node_detector
node_async -->|"wraps operations"| node_recognizer

click node_faceimage "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Model/FaceImage.cs"
click node_skia "https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.SkiaSharp/ViewFaceSkiaSharpExtension.cs"
click node_imagesharp "https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.ImageSharp/ViewFaceImageSharpExtension.cs"
click node_drawing "https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.SystemDrawing/ViewFaceSystemDrawingExtension.cs"
click node_detector "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceDetector.cs"
click node_landmarker "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceLandmarker.cs"
click node_recognizer "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceRecognizer.cs"
click node_antispoof "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceAntiSpoofing.cs"
click node_quality "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceQuality.cs"
click node_tracker "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceTracker.cs"
click node_mask "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/MaskDetector.cs"
click node_predictors "https://github.com/gb28181/viewfacecore/tree/main/src/ViewFaceCore/Core/Predictor"
click node_configs "https://github.com/gb28181/viewfacecore/tree/main/src/ViewFaceCore/Configs"
click node_native "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Native/ViewFaceNative.PInvoke.cs"
click node_bridge "https://github.com/gb28181/viewfacecore/blob/main/src/Bridges/Shared/bridge.cpp"
click node_di "https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceCoreHostExtensions.cs"
click node_factory "https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceFactory.cs"
click node_async "https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Extensions/Public/ViewFaceAsyncExtensions.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bitmap,node_faceimage,node_skia,node_imagesharp,node_drawing toneBlue
class node_detector,node_landmarker,node_recognizer,node_antispoof,node_quality,node_tracker,node_mask,node_predictors,node_configs toneAmber
class node_native,node_bridge,node_seeta toneMint
class node_di,node_factory,node_async toneRose
class node_developer toneIndigo
```

## Components

### Image input

- **Image source**
- [FaceImage](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Model/FaceImage.cs): `src/ViewFaceCore/Model/FaceImage.cs`
- [SkiaSharp adapter](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.SkiaSharp/ViewFaceSkiaSharpExtension.cs): `src/Extensions/ViewFaceCore.Extension.SkiaSharp/ViewFaceSkiaSharpExtension.cs`
- [ImageSharp adapter](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.ImageSharp/ViewFaceImageSharpExtension.cs): `src/Extensions/ViewFaceCore.Extension.ImageSharp/ViewFaceImageSharpExtension.cs`
- [System.Drawing adapter](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.SystemDrawing/ViewFaceSystemDrawingExtension.cs): `src/Extensions/ViewFaceCore.Extension.SystemDrawing/ViewFaceSystemDrawingExtension.cs`

### Face analysis

- [Face detection](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceDetector.cs): `src/ViewFaceCore/Core/FaceDetector.cs`
- [Face landmarks](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceLandmarker.cs): `src/ViewFaceCore/Core/FaceLandmarker.cs`
- [Face recognition](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceRecognizer.cs): `src/ViewFaceCore/Core/FaceRecognizer.cs`
- [Liveness detection](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceAntiSpoofing.cs): `src/ViewFaceCore/Core/FaceAntiSpoofing.cs`
- [Face quality](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceQuality.cs): `src/ViewFaceCore/Core/FaceQuality.cs`
- [Face tracking](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/FaceTracker.cs): `src/ViewFaceCore/Core/FaceTracker.cs`
- [Mask detection](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Core/MaskDetector.cs): `src/ViewFaceCore/Core/MaskDetector.cs`
- [Age gender eyes](https://github.com/gb28181/viewfacecore/tree/main/src/ViewFaceCore/Core/Predictor): `src/ViewFaceCore/Core/Predictor`
- [Feature configuration](https://github.com/gb28181/viewfacecore/tree/main/src/ViewFaceCore/Configs): `src/ViewFaceCore/Configs`

### Native runtime

- [Native PInvoke](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Native/ViewFaceNative.PInvoke.cs): `src/ViewFaceCore/Native/ViewFaceNative.PInvoke.cs`
- [C++ bridge](https://github.com/gb28181/viewfacecore/blob/main/src/Bridges/Shared/bridge.cpp): `src/Bridges/Shared/bridge.cpp`
- **SeetaFace6 engine**

### Integration extensions

- [Dependency injection](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceCoreHostExtensions.cs): `src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceCoreHostExtensions.cs`
- [ViewFace factory](https://github.com/gb28181/viewfacecore/blob/main/src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceFactory.cs): `src/Extensions/ViewFaceCore.Extension.DependencyInjection/ViewFaceFactory.cs`
- [Async extensions](https://github.com/gb28181/viewfacecore/blob/main/src/ViewFaceCore/Extensions/Public/ViewFaceAsyncExtensions.cs): `src/ViewFaceCore/Extensions/Public/ViewFaceAsyncExtensions.cs`

### Other components

- **Application developer**

## Connections

- Application developer → Image source: provides image
- Application developer → Face detection: requests detection
- Image source → SkiaSharp adapter: converts image
- Image source → ImageSharp adapter: converts image
- Image source → System.Drawing adapter: converts image
- SkiaSharp adapter → FaceImage: creates
- ImageSharp adapter → FaceImage: creates
- System.Drawing adapter → FaceImage: creates
- Face detection → Native PInvoke: invokes detection
- Face landmarks → Native PInvoke: invokes marking
- Face recognition → Native PInvoke: extracts features
- Liveness detection → Native PInvoke: invokes liveness
- Face quality → Native PInvoke: evaluates quality
- Face tracking → Native PInvoke: tracks faces
- Mask detection → Native PInvoke: detects masks
- Age gender eyes → Native PInvoke: predicts attributes
- Native PInvoke → C++ bridge: calls exports
- C++ bridge → SeetaFace6 engine: uses engine
- Dependency injection → Feature configuration: reads options
- Dependency injection → Face detection: registers services
- Dependency injection → Face landmarks: registers services
- Dependency injection → Face recognition: registers services
- Dependency injection → ViewFace factory: registers factory
- Async extensions → Face detection: wraps operations
- Async extensions → Face recognition: wraps operations
