Last updated: Enero 2026
Alternativa a AForge.NET: Guía de migración a VisioForge .Net SDK
Reemplace el abandonado AForge.NET con un SDK .NET moderno y multiplataforma
Desarrolladores C# que migran de AForge.NET (AForge.Video, AForge.Vision, AForge.Imaging) a alternativas modernas de .NET 6-10
¿Por qué reemplazar AForge.NET?
AForge.NET ha sido abandonado desde julio de 2013 — más de 12 años sin actualizaciones, parches de seguridad ni correcciones de errores. Está orientado a .NET Framework 2.0 y no puede ejecutarse en .NET 6-10 moderno sin forks comunitarios de calidad variable.
| Riesgo | Impacto |
|---|---|
| Sin parches de seguridad | Las vulnerabilidades en el procesamiento de video/imagen permanecen sin parchear |
| Sin soporte .NET 6+ | No se pueden usar características modernas de .NET, AOT o implementación multiplataforma |
| Sin soporte de nuevos códecs | Sin H.265, AV1, VP9 ni formatos de contenedor modernos |
| Sin comunidad | Foro cerrado en abril de 2012, sin mantenedores activos |
| Dependencia de DirectShow | Obsoleto por Microsoft en favor de Media Foundation |
| Solo Windows | No puede orientarse a macOS, Linux, iOS, Android |
AForge.Video → VisioForge Video Capture SDK .Net
Mapeo de clases
| Componente AForge.Video | Reemplazo VisioForge |
|---|---|
| VideoCaptureDevice | VideoCaptureCoreX + VideoCaptureDeviceSourceSettings |
| MJPEGStream | VideoCaptureCoreX + RTSPSourceSettings or UniversalSourceBlock |
| JPEGStream | VideoCaptureCoreX + IPCameraSourceSettings |
| ScreenCaptureStream | VideoCaptureCoreX + ScreenCaptureSourceSettings |
| FileVideoSource | MediaPlayerCoreX (reproducción) o VideoEditCoreX (procesamiento) |
| AsyncVideoSource | Integrado — todas las fuentes VisioForge son asíncronas por defecto |
| NewFrameEventArgs | Evento OnVideoFrameBuffer |
C# Captura de webcam
AForge.NET — captura de webcam (antes)
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# captura de webcam (despué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# Cámara IP RTSP / MJPEG Streaming
AForge.NET — flujo MJPEG (antes)
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# captura de cámara IP RTSP (despué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# Captura y grabación de pantalla
AForge.NET — captura de pantalla (antes)
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# grabador de pantalla (despué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 → Bloques de visión por computadora VisioForge
Mapeo de clases
| Componente AForge.Vision | Reemplazo VisioForge |
|---|---|
| MotionDetector | CVMotionCellsBlock — sustracción de fondo MOG2 con seguimiento de objetos y asignación de ID |
| TwoFramesDifferenceDetector | CVMotionCellsBlock — MOG2 (history: 500 frames, variance threshold: 40) |
| SimpleBackgroundModelingDetector | CVMotionCellsBlock — modelo de fondo automático con detección basada en contornos |
| CustomFrameDifferenceDetector | CVMotionCellsSettings configurable |
| MotionAreaHighlighting | CVMotionCellsBlock con DrawEnabled = true — dibuja cuadros delimitadores con IDs de objetos |
| GridMotionAreaProcessing | Detección de movimiento basada en zonas mediante eventos del Video Capture SDK |
| BlobCounter | CVMotionCellsBlock — seguimiento de blobs, detección de contornos, conteo de vehículos a través de una línea de seguimiento |
C# Detección de movimiento y objetos
AForge.NET — detección de movimiento (antes)
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 — detección de movimiento basada en eventos (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# Detección facial y detección de peatones (no disponible en AForge)
Mapeo de clases
| Característica | Bloque VisioForge |
|---|---|
| Detección facial por cascada Haar | CVFaceDetectBlock — detección de rostro frontal/perfil, ojos, nariz, boca |
| Detección facial DNN | CVFaceDetectBlock — modelo Caffe SSD, filtrado de confianza, aceleración GPU |
| Detección facial DLib | CVFaceDetectBlock (CVD) — detector facial frontal DLib HOG+SVM |
| Detección de peatones | CVFaceDetectBlock — detector de personas HOG+SVM integrado |
| Detección de obstrucción de lente | CameraCoveredDetectorBlock — detección de bordes Canny |
C# Detección facial
AForge.NET (antes)
C#// AForge had no built-in face detection — required manual Haar cascade code
// or using Accord.NET's HaarObjectDetector on top of AForge framesVisioForge — detección facial por cascada 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 — detector facial DNN (mayor precisión, soporte GPU)
C#var settings = new CVFaceDetectSettings
{
Confidence = 0.25,
DrawEnabled = true,
BlurFaces = true // built-in privacy blur
};
var detector = new CVFaceDetectBlock(settings);VisioForge — detector facial DLib
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
MinFaceSize = new Size(30, 30)
};
var detector = new CVFaceDetectBlock(settings);C# Detección de peatones
AForge.NET (antes)
C#// AForge had no pedestrian detection — required manual HOG+SVM implementationVisioForge — detección de peatones (despué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
Mapeo de clases
| Característica AForge.Imaging | VisioForge integrado | OpenCvSharp independiente |
|---|---|---|
| GaussianBlur | CVProcess.BlurRegion() (kernel 23x23) | Cv2.GaussianBlur() |
| Pixellate | CVProcess.PixelateRegion() | Reducción/ampliación personalizada |
| CannyEdgeDetector | CameraCoveredDetector (thresholds 100/200) | Cv2.Canny() |
| Erosion / Dilation | Usado internamente por CVMotionCellsBlock (elemento estructurante 5x5) | Cv2.Erode() / Cv2.Dilate() |
| BlobCounter | CVMotionCellsBlock — detección de contornos, filtrado de área/relación de aspecto, envolvente convexa | Cv2.FindContours() |
| Grayscale | Conversión BGR→Gray integrada en todos los detectores | Cv2.CvtColor() |
| Threshold | Umbralización binaria integrada en la pipeline de movimiento | Cv2.Threshold() |
| ResizeBilinear | Escalado de video integrado en todas las configuraciones de detectores | Cv2.Resize() |
| HistogramEqualization | Usado en CVFaceDetect para mejorar la detección | Cv2.EqualizeHist() |
| HSLFiltering / filtros de color | — | Cv2.InRange() / Cv2.CvtColor() |
| HoughLineTransformation | — | Cv2.HoughLinesP() |
| SobelEdgeDetector | — | Cv2.Sobel() |
| Template matching | — | Cv2.MatchTemplate() |
Lista de verificación de migración
- Inventariar referencias AForge — Encontrar todos los `using AForge.*` en su proyecto
- Instalar paquetes NuGet de VisioForge
- Reemplazar clases de fuentes de video
- Reemplazar detección de movimiento
- Reemplazar detección facial
- Reemplazar detección de blobs/objetos
- Eliminar bucles manuales de frames
- Agregar grabación/streaming
- Orientar a .NET moderno — .NET 6-10
- Probar multiplataforma
- Para procesamiento de imágenes — VisioForge CV cubre desenfoque, pixelación, Canny, morfología; usar OpenCvSharp para filtros adicionales
Lo que gana después de la migración
| Capacidad | AForge.NET | Después de la migración |
|---|---|---|
| Framework | .NET Framework 2.0 | .NET 6-10 |
| Plataformas | Solo Windows | Windows, macOS, Linux, iOS, Android |
| Captura de video | DirectShow básico | SDK profesional con API asíncrona |
| Grabación | Implementación manual | Integrada (MP4, MKV, AVI, WebM) |
| Codificación por hardware | Ninguna | NVENC, QSV, AMF, VideoToolbox |
| Streaming | Ninguno | RTMP, HLS, SRT, NDI |
| Efectos de audio | Ninguno | 40+ (EQ, reverb, chorus, 3D) |
| Efectos de video | Ninguno | Pipeline GPU + CPU |
| Detección facial | Ninguna | Haar + DNN (Caffe SSD) + DLib HOG, con desenfoque/pixelación |
| Detección de movimiento | Diferencia de frames básica | Sustracción de fondo MOG2 + seguimiento de objetos con IDs |
| Detección de peatones | Ninguna | Detector de personas HOG+SVM integrado |
| Cámaras IP | Solo MJPEG | RTSP, RTMP, HLS, ONVIF |
| Cámara virtual | Ninguna | Salida a Zoom/Teams/OBS |
| Mantenimiento | Abandonado (2013) | Desarrollo activo |
| Seguridad | Sin parches | Actualizaciones regulares |
Frequently Asked Questions
¿Se sigue manteniendo AForge.NET?
No. AForge.NET ha sido abandonado desde julio de 2013 sin actualizaciones, parches de seguridad ni soporte para .NET 6+. Existen forks comunitarios pero varían en calidad y mantenimiento. Use VisioForge .Net SDK como alternativa moderna a AForge.NET.
¿Cuál es la mejor alternativa a AForge.NET para captura de video en C#?
VisioForge Video Capture SDK .Net reemplaza AForge.Video con una API asíncrona moderna que soporta webcams, cámaras IP (RTSP/ONVIF), captura de pantalla y salida a MP4, WebM y otros formatos en .NET 6-10.
¿VisioForge reemplaza los filtros de AForge.Imaging?
Parcialmente. VisioForge CV incluye desenfoque, pixelación, detección de bordes Canny, operaciones morfológicas, conversión a escala de grises y ecualización de histograma. Para la gama completa de filtros de imagen (Sobel, Hough, filtrado de color, template matching), use OpenCvSharp junto con VisioForge.
¿Puedo usar VisioForge para detección facial en C# sin AForge?
Sí. VisioForge .Net SDK incluye tres motores de detección facial integrados — cascada Haar, basado en DNN y basado en DLib — con desenfoque y pixelación de privacidad integrados. No se necesita dependencia de AForge o Accord.NET.
¿VisioForge soporta .NET 6, .NET 8, .NET 9 y .NET 10?
Sí. Todos los paquetes de VisioForge .Net SDK soportan .NET 6 hasta .NET 10, incluyendo implementación multiplataforma en Windows, macOS, Linux, iOS y Android.
¿Puedo migrar de AForge.NET de forma incremental?
Sí. Los SDKs de VisioForge pueden coexistir con los paquetes de AForge.NET durante la migración. Reemplace un componente a la vez — comience con la captura de video, luego la detección, luego el procesamiento de imágenes — y elimine los paquetes NuGet de AForge a medida que se complete cada paso.
