VisioForge

Last updated: January 2026

AForge.NET Alternative: Migration Guide to VisioForge .Net SDK

Replace abandoned AForge.NET with a modern, cross-platform .NET SDK

C# developers migrating from AForge.NET (AForge.Video, AForge.Vision, AForge.Imaging) to modern .NET 6-10 alternatives

Why Replace AForge.NET?

AForge.NET has been abandoned since July 2013 — over 12 years without updates, security patches, or bug fixes. It targets .NET Framework 2.0 and cannot run on modern .NET 6-10 without community forks of varying quality.

RiskImpact
No security patchesVulnerabilities in video/image processing remain unpatched
No .NET 6+ supportCannot use modern .NET features, AOT, or cross-platform deployment
No new codec supportNo H.265, AV1, VP9, or modern container formats
No communityForum closed April 2012, no active maintainers
DirectShow dependencyDeprecated by Microsoft in favor of Media Foundation
Windows-onlyCannot target macOS, Linux, iOS, Android

AForge.Video → VisioForge Video Capture SDK .Net

Class Mapping

AForge.Video ComponentVisioForge Replacement
VideoCaptureDeviceVideoCaptureCoreX + VideoCaptureDeviceSourceSettings
MJPEGStreamVideoCaptureCoreX + RTSPSourceSettings or UniversalSourceBlock
JPEGStreamVideoCaptureCoreX + IPCameraSourceSettings
ScreenCaptureStreamVideoCaptureCoreX + ScreenCaptureSourceSettings
FileVideoSourceMediaPlayerCoreX (playback) or VideoEditCoreX (processing)
AsyncVideoSourceBuilt-in — all VisioForge sources are async by default
NewFrameEventArgsOnVideoFrameBuffer event

C# Webcam Capture

AForge.NET — webcam capture (before)

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# webcam capture (after)

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# IP Camera RTSP / MJPEG Streaming

AForge.NET — MJPEG stream (before)

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# RTSP IP camera capture (after)

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# Screen Capture and Recording

AForge.NET — screen capture (before)

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# screen recorder (after)

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 → VisioForge Computer Vision Blocks

Class Mapping

AForge.Vision ComponentVisioForge Replacement
MotionDetectorCVMotionCellsBlock — MOG2 background subtraction with object tracking and ID assignment
TwoFramesDifferenceDetectorCVMotionCellsBlock — MOG2 (history: 500 frames, variance threshold: 40)
SimpleBackgroundModelingDetectorCVMotionCellsBlock — automatic background model with contour-based detection
CustomFrameDifferenceDetectorConfigurable CVMotionCellsSettings
MotionAreaHighlightingCVMotionCellsBlock with DrawEnabled = true — draws bounding boxes with object IDs
GridMotionAreaProcessingZone-based motion detection via Video Capture SDK events
BlobCounterCVMotionCellsBlock — blob tracking, contour detection, vehicle counting across a tracking line

C# Motion and Object Detection

AForge.NET — motion detection (before)

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 — event-based motion detection (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 (MediaBlocks pipeline)

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 matching

C# Face Detection and Pedestrian Detection (Not Available in AForge)

Class Mapping

FeatureVisioForge Block
Haar cascade face detectionCVFaceDetectBlock — frontal/profile face, eye, nose, mouth detection
DNN face detectionCVFaceDetectBlock — Caffe SSD model, confidence filtering, GPU acceleration
DLib face detectionCVFaceDetectBlock (CVD) — DLib HOG+SVM frontal face detector
Pedestrian detectionCVFaceDetectBlock — built-in HOG+SVM people detector
Lens obstruction detectionCameraCoveredDetectorBlock — Canny edge detection

C# Face Detection

AForge.NET (before)

C#
// AForge had no built-in face detection — required manual Haar cascade code
// or using Accord.NET's HaarObjectDetector on top of AForge frames

VisioForge — Haar cascade face detection

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 — DNN face detector (higher accuracy, GPU support)

C#
var settings = new CVFaceDetectSettings
{
    Confidence = 0.25,
    DrawEnabled = true,
    BlurFaces = true  // built-in privacy blur
};
var detector = new CVFaceDetectBlock(settings);

VisioForge — DLib face detector

C#
var settings = new CVFaceDetectSettings
{
    DrawEnabled = true,
    MinFaceSize = new Size(30, 30)
};
var detector = new CVFaceDetectBlock(settings);

C# Pedestrian Detection

AForge.NET (before)

C#
// AForge had no pedestrian detection — required manual HOG+SVM implementation

VisioForge — pedestrian detection (after)

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 detection

AForge.Imaging → VisioForge CV + OpenCvSharp

Class Mapping

AForge.Imaging FeatureVisioForge Built-inStandalone OpenCvSharp
GaussianBlurCVProcess.BlurRegion() (kernel 23x23)Cv2.GaussianBlur()
PixellateCVProcess.PixelateRegion()Custom downscale/upscale
CannyEdgeDetectorCameraCoveredDetector (thresholds 100/200)Cv2.Canny()
Erosion / DilationUsed internally by CVMotionCellsBlock (5x5 structuring element)Cv2.Erode() / Cv2.Dilate()
BlobCounterCVMotionCellsBlock — contour detection, area/aspect filtering, convex hullCv2.FindContours()
GrayscaleBuilt-in BGR→Gray conversion in all detectorsCv2.CvtColor()
ThresholdBuilt-in binary thresholding in motion pipelineCv2.Threshold()
ResizeBilinearBuilt-in video scaling in all detector settingsCv2.Resize()
HistogramEqualizationUsed in CVFaceDetect for improved detectionCv2.EqualizeHist()
HSLFiltering / color filtersCv2.InRange() / Cv2.CvtColor()
HoughLineTransformationCv2.HoughLinesP()
SobelEdgeDetectorCv2.Sobel()
Template matchingCv2.MatchTemplate()

Migration Checklist

  • Inventory AForge references — Find all `using AForge.*` in your project
  • Install VisioForge NuGet packages
  • Replace video source classes
  • Replace motion detection
  • Replace face detection
  • Replace blob/object detection
  • Remove manual frame loops
  • Add recording/streaming
  • Target modern .NET — .NET 6-10
  • Test cross-platform
  • For image processing — VisioForge CV covers blur, pixelate, Canny, morphology; use OpenCvSharp for additional filters

What You Gain After Migration

CapabilityAForge.NETAfter Migration
Framework.NET Framework 2.0.NET 6-10
PlatformsWindows onlyWindows, macOS, Linux, iOS, Android
Video captureBasic DirectShowProfessional SDK with async API
RecordingManual implementationBuilt-in (MP4, MKV, AVI, WebM)
Hardware encodingNoneNVENC, QSV, AMF, VideoToolbox
StreamingNoneRTMP, HLS, SRT, NDI
Audio effectsNone40+ (EQ, reverb, chorus, 3D)
Video effectsNoneGPU + CPU pipeline
Face detectionNoneHaar + DNN (Caffe SSD) + DLib HOG, with blur/pixelate
Motion detectionBasic frame differencingMOG2 background subtraction + object tracking with IDs
Pedestrian detectionNoneBuilt-in HOG+SVM people detector
IP camerasMJPEG onlyRTSP, RTMP, HLS, ONVIF
Virtual cameraNoneOutput to Zoom/Teams/OBS
MaintenanceAbandoned (2013)Active development
SecurityUnpatchedRegular updates

Frequently Asked Questions

Is AForge.NET still maintained?
No. AForge.NET has been abandoned since July 2013 with no updates, security patches, or .NET 6+ support. Community forks exist but vary in quality and maintenance. Use VisioForge .Net SDK as a modern AForge.NET alternative.
What is the best AForge.NET alternative for C# video capture?
VisioForge Video Capture SDK .Net replaces AForge.Video with a modern async API supporting webcams, IP cameras (RTSP/ONVIF), screen capture, and output to MP4, WebM, and other formats on .NET 6-10.
Does VisioForge replace AForge.Imaging filters?
Partially. VisioForge CV includes blur, pixelation, Canny edge detection, morphological operations, grayscale conversion, and histogram equalization. For the full range of image filters (Sobel, Hough, color filtering, template matching), use OpenCvSharp alongside VisioForge.
Can I use VisioForge for C# face detection without AForge?
Yes. VisioForge .Net SDK includes three built-in face detection engines — Haar cascade, DNN-based, and DLib-based — with built-in privacy blur and pixelation. No AForge or Accord.NET dependency needed.
Does VisioForge support .NET 6, .NET 8, .NET 9, and .NET 10?
Yes. All VisioForge .Net SDK packages support .NET 6 through .NET 10, including cross-platform deployment on Windows, macOS, Linux, iOS, and Android.
Can I migrate from AForge.NET incrementally?
Yes. VisioForge SDKs can coexist with AForge.NET packages during migration. Replace one component at a time — start with video capture, then detection, then imaging — and remove AForge NuGet packages as each step completes.

Start Your Migration

Related Migration Guides