Last updated: Janvier 2026
Alternative à AForge.NET : Guide de migration vers VisioForge .Net SDK
Remplacez AForge.NET abandonné par un SDK .NET moderne et multiplateforme
Développeurs C# migrant d'AForge.NET (AForge.Video, AForge.Vision, AForge.Imaging) vers des alternatives modernes .NET 6-10
Pourquoi remplacer AForge.NET ?
AForge.NET a été abandonné depuis juillet 2013 — plus de 12 ans sans mises à jour, correctifs de sécurité ni corrections de bugs. Il cible .NET Framework 2.0 et ne peut pas fonctionner sur .NET 6-10 moderne sans forks communautaires de qualité variable.
| Risque | Impact |
|---|---|
| Aucun correctif de sécurité | Les vulnérabilités dans le traitement vidéo/image restent non corrigées |
| Pas de support .NET 6+ | Impossible d'utiliser les fonctionnalités modernes de .NET, AOT ou le déploiement multiplateforme |
| Pas de support de nouveaux codecs | Pas de H.265, AV1, VP9 ni de formats de conteneur modernes |
| Pas de communauté | Forum fermé en avril 2012, aucun mainteneur actif |
| Dépendance à DirectShow | Obsolète selon Microsoft en faveur de Media Foundation |
| Windows uniquement | Impossible de cibler macOS, Linux, iOS, Android |
AForge.Video → VisioForge Video Capture SDK .Net
Correspondance des classes
| Composant AForge.Video | Remplacement VisioForge |
|---|---|
| VideoCaptureDevice | VideoCaptureCoreX + VideoCaptureDeviceSourceSettings |
| MJPEGStream | VideoCaptureCoreX + RTSPSourceSettings or UniversalSourceBlock |
| JPEGStream | VideoCaptureCoreX + IPCameraSourceSettings |
| ScreenCaptureStream | VideoCaptureCoreX + ScreenCaptureSourceSettings |
| FileVideoSource | MediaPlayerCoreX (lecture) ou VideoEditCoreX (traitement) |
| AsyncVideoSource | Intégré — toutes les sources VisioForge sont asynchrones par défaut |
| NewFrameEventArgs | Événement OnVideoFrameBuffer |
C# Capture webcam
AForge.NET — capture webcam (avant)
C#// AForge: Manual device enumeration, callback-based, no recording
var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
var videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
videoSource.NewFrame += (sender, eventArgs) =>
{
Bitmap frame = (Bitmap)eventArgs.Frame.Clone();
pictureBox.Image = frame;
// Manual recording requires separate code
};
videoSource.Start();
// Cleanup
videoSource.SignalToStop();
videoSource.WaitForStop();VisioForge — C# capture webcam (après)
C#// VisioForge: Typed API, async, preview + recording built-in
var capture = new VideoCaptureCoreX(videoView); // Preview automatic
var devices = await DeviceEnumerator.Shared.VideoSourcesAsync();
capture.Video_Source = new VideoCaptureDeviceSourceSettings(devices[0]);
capture.Outputs_Add(new MP4Output("recording.mp4"), true);
await capture.StartAsync();
// Stop
await capture.StopAsync();C# Caméra IP RTSP / MJPEG Streaming
AForge.NET — flux MJPEG (avant)
C#// AForge: MJPEG only, no RTSP, no reconnection
var stream = new MJPEGStream("http://camera-ip/mjpg/video.mjpg");
stream.NewFrame += (sender, eventArgs) =>
{
pictureBox.Image = (Bitmap)eventArgs.Frame.Clone();
};
stream.Start();VisioForge — C# capture caméra IP RTSP (après)
C#// VisioForge: RTSP, RTMP, HLS, MJPEG — with auto-reconnection
var capture = new VideoCaptureCoreX(videoView);
capture.Video_Source = new RTSPSourceSettings(
new Uri("rtsp://admin:pass@camera-ip/stream"));
capture.Outputs_Add(new MP4Output("recording.mp4"), true);
await capture.StartAsync();C# Capture et enregistrement d'écran
AForge.NET — capture d'écran (avant)
C#// AForge: Basic, CPU-intensive, no recording
var screenStream = new ScreenCaptureStream(Screen.PrimaryScreen.Bounds);
screenStream.NewFrame += (sender, eventArgs) =>
{
pictureBox.Image = (Bitmap)eventArgs.Frame.Clone();
// Must manually encode and write frames to create a recording
};
screenStream.Start();VisioForge — C# enregistreur d'écran (après)
C#// VisioForge: Region selection, cursor capture, hardware encoding
var capture = new VideoCaptureCoreX(videoView);
capture.Video_Source = new ScreenCaptureSourceSettings();
capture.Outputs_Add(new MP4Output("screen.mp4", new H264EncoderSettings()), true);
await capture.StartAsync();AForge.Vision → Blocs de vision par ordinateur VisioForge
Correspondance des classes
| Composant AForge.Vision | Remplacement VisioForge |
|---|---|
| MotionDetector | CVMotionCellsBlock — soustraction de fond MOG2 avec suivi d'objets et attribution d'ID |
| TwoFramesDifferenceDetector | CVMotionCellsBlock — MOG2 (history: 500 frames, variance threshold: 40) |
| SimpleBackgroundModelingDetector | CVMotionCellsBlock — modèle de fond automatique avec détection basée sur les contours |
| CustomFrameDifferenceDetector | CVMotionCellsSettings configurable |
| MotionAreaHighlighting | CVMotionCellsBlock avec DrawEnabled = true — dessine des boîtes englobantes avec les IDs des objets |
| GridMotionAreaProcessing | Détection de mouvement par zones via les événements du Video Capture SDK |
| BlobCounter | CVMotionCellsBlock — suivi de blobs, détection de contours, comptage de véhicules sur une ligne de suivi |
C# Détection de mouvement et d'objets
AForge.NET — détection de mouvement (avant)
C#// AForge: Manual frame processing, no recording integration
var detector = new MotionDetector(
new TwoFramesDifferenceDetector(),
new MotionAreaHighlighting());
videoSource.NewFrame += (sender, eventArgs) =>
{
float motionLevel = detector.ProcessFrame((Bitmap)eventArgs.Frame.Clone());
if (motionLevel > 0.02f)
Console.WriteLine($"Motion: {motionLevel * 100:F1}%");
};VisioForge — détection de mouvement événementielle (Video Capture SDK)
C#// Integrated detection during capture + recording
var capture = new VideoCaptureCoreX(videoView);
capture.Video_Source = new VideoCaptureDeviceSourceSettings(devices[0]);
capture.Outputs_Add(new MP4Output("recording.mp4"), true);
capture.OnMotionDetection += (s, e) =>
{
if (e.Level > 30)
Console.WriteLine($"Motion: {e.Level}%");
};
await capture.StartAsync();VisioForge — CVMotionCellsBlock (pipeline MediaBlocks)
C#// MOG2 background subtraction with automatic object tracking and IDs
var settings = new CVMotionCellsSettings
{
DrawEnabled = true
};
var detector = new CVMotionCellsBlock(settings);
// Tracks objects with unique IDs using Euclidean distance matchingC# Détection faciale et détection de piétons (non disponible dans AForge)
Correspondance des classes
| Fonctionnalité | Bloc VisioForge |
|---|---|
| Détection faciale par cascade Haar | CVFaceDetectBlock — détection de visage frontal/profil, yeux, nez, bouche |
| Détection faciale DNN | CVFaceDetectBlock — modèle Caffe SSD, filtrage par confiance, accélération GPU |
| Détection faciale DLib | CVFaceDetectBlock (CVD) — détecteur facial frontal DLib HOG+SVM |
| Détection de piétons | CVFaceDetectBlock — détecteur de personnes HOG+SVM intégré |
| Détection d'obstruction d'objectif | CameraCoveredDetectorBlock — détection de bords Canny |
C# Détection faciale
AForge.NET (avant)
C#// AForge had no built-in face detection — required manual Haar cascade code
// or using Accord.NET's HaarObjectDetector on top of AForge framesVisioForge — détection faciale par cascade Haar
C#var settings = new CVFaceDetectSettings
{
DetectFrontalFace = true,
DetectProfileFace = true,
DetectEyes = true,
DetectNose = true,
DetectMouth = true,
MinFaceSize = new Size(30, 30),
ScaleFactor = 1.1,
DrawEnabled = true,
BlurFaces = false, // set true for privacy blur
PixelateFaces = false // set true for privacy pixelation
};
var detector = new CVFaceDetectBlock(settings);VisioForge — détecteur facial DNN (précision supérieure, support GPU)
C#var settings = new CVFaceDetectSettings
{
Confidence = 0.25,
DrawEnabled = true,
BlurFaces = true // built-in privacy blur
};
var detector = new CVFaceDetectBlock(settings);VisioForge — détecteur facial DLib
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
MinFaceSize = new Size(30, 30)
};
var detector = new CVFaceDetectBlock(settings);C# Détection de piétons
AForge.NET (avant)
C#// AForge had no pedestrian detection — required manual HOG+SVM implementationVisioForge — détection de piétons (après)
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
VideoScale = 1.0,
FramesToSkip = 2
};
var detector = new CVFaceDetectBlock(settings);
// Built-in HOG descriptors + SVM classifier, multi-scale detectionAForge.Imaging → VisioForge CV + OpenCvSharp
Correspondance des classes
| Fonctionnalité AForge.Imaging | VisioForge intégré | OpenCvSharp autonome |
|---|---|---|
| GaussianBlur | CVProcess.BlurRegion() (kernel 23x23) | Cv2.GaussianBlur() |
| Pixellate | CVProcess.PixelateRegion() | Réduction/agrandissement personnalisé |
| CannyEdgeDetector | CameraCoveredDetector (thresholds 100/200) | Cv2.Canny() |
| Erosion / Dilation | Utilisé en interne par CVMotionCellsBlock (élément structurant 5x5) | Cv2.Erode() / Cv2.Dilate() |
| BlobCounter | CVMotionCellsBlock — détection de contours, filtrage par aire/rapport d'aspect, enveloppe convexe | Cv2.FindContours() |
| Grayscale | Conversion BGR→Gray intégrée dans tous les détecteurs | Cv2.CvtColor() |
| Threshold | Seuillage binaire intégré dans le pipeline de mouvement | Cv2.Threshold() |
| ResizeBilinear | Mise à l'échelle vidéo intégrée dans tous les paramètres des détecteurs | Cv2.Resize() |
| HistogramEqualization | Utilisé dans CVFaceDetect pour améliorer la détection | Cv2.EqualizeHist() |
| HSLFiltering / filtres de couleur | — | Cv2.InRange() / Cv2.CvtColor() |
| HoughLineTransformation | — | Cv2.HoughLinesP() |
| SobelEdgeDetector | — | Cv2.Sobel() |
| Template matching | — | Cv2.MatchTemplate() |
Liste de vérification de migration
- Inventorier les références AForge — Trouver tous les `using AForge.*` dans votre projet
- Installer les packages NuGet VisioForge
- Remplacer les classes de sources vidéo
- Remplacer la détection de mouvement
- Remplacer la détection faciale
- Remplacer la détection de blobs/objets
- Supprimer les boucles manuelles de frames
- Ajouter l'enregistrement/streaming
- Cibler le .NET moderne — .NET 6-10
- Tester le multiplateforme
- Pour le traitement d'images — VisioForge CV couvre le flou, la pixelisation, Canny, la morphologie ; utiliser OpenCvSharp pour les filtres supplémentaires
Ce que vous gagnez après la migration
| Capacité | AForge.NET | Après la migration |
|---|---|---|
| Framework | .NET Framework 2.0 | .NET 6-10 |
| Plateformes | Windows uniquement | Windows, macOS, Linux, iOS, Android |
| Capture vidéo | DirectShow basique | SDK professionnel avec API asynchrone |
| Enregistrement | Implémentation manuelle | Intégré (MP4, MKV, AVI, WebM) |
| Encodage matériel | Aucun | NVENC, QSV, AMF, VideoToolbox |
| Streaming | Aucun | RTMP, HLS, SRT, NDI |
| Effets audio | Aucun | 40+ (EQ, reverb, chorus, 3D) |
| Effets vidéo | Aucun | Pipeline GPU + CPU |
| Détection faciale | Aucune | Haar + DNN (Caffe SSD) + DLib HOG, avec flou/pixelisation |
| Détection de mouvement | Différence de frames basique | Soustraction de fond MOG2 + suivi d'objets avec IDs |
| Détection de piétons | Aucune | Détecteur de personnes HOG+SVM intégré |
| Caméras IP | MJPEG uniquement | RTSP, RTMP, HLS, ONVIF |
| Caméra virtuelle | Aucune | Sortie vers Zoom/Teams/OBS |
| Maintenance | Abandonné (2013) | Développement actif |
| Sécurité | Non corrigé | Mises à jour régulières |
Frequently Asked Questions
AForge.NET est-il encore maintenu ?
Non. AForge.NET a été abandonné depuis juillet 2013 sans mises à jour, correctifs de sécurité ni support .NET 6+. Des forks communautaires existent mais varient en qualité et maintenance. Utilisez VisioForge .Net SDK comme alternative moderne à AForge.NET.
Quelle est la meilleure alternative à AForge.NET pour la capture vidéo en C# ?
VisioForge Video Capture SDK .Net remplace AForge.Video avec une API asynchrone moderne supportant les webcams, caméras IP (RTSP/ONVIF), capture d'écran et sortie en MP4, WebM et autres formats sur .NET 6-10.
VisioForge remplace-t-il les filtres d'AForge.Imaging ?
Partiellement. VisioForge CV inclut le flou, la pixelisation, la détection de bords Canny, les opérations morphologiques, la conversion en niveaux de gris et l'égalisation d'histogramme. Pour la gamme complète de filtres d'image (Sobel, Hough, filtrage de couleur, template matching), utilisez OpenCvSharp avec VisioForge.
Puis-je utiliser VisioForge pour la détection faciale en C# sans AForge ?
Oui. VisioForge .Net SDK inclut trois moteurs de détection faciale intégrés — cascade Haar, basé sur DNN et basé sur DLib — avec flou et pixelisation de confidentialité intégrés. Aucune dépendance à AForge ou Accord.NET nécessaire.
VisioForge supporte-t-il .NET 6, .NET 8, .NET 9 et .NET 10 ?
Oui. Tous les packages VisioForge .Net SDK supportent .NET 6 à .NET 10, y compris le déploiement multiplateforme sur Windows, macOS, Linux, iOS et Android.
Puis-je migrer depuis AForge.NET de manière incrémentale ?
Oui. Les SDKs VisioForge peuvent coexister avec les packages AForge.NET pendant la migration. Remplacez un composant à la fois — commencez par la capture vidéo, puis la détection, puis le traitement d'images — et supprimez les packages NuGet AForge à mesure que chaque étape est terminée.
