Last updated: Styczeń 2026
Alternatywa dla AForge.NET: Przewodnik migracji do VisioForge .Net SDK
Zamień porzucony AForge.NET na nowoczesny, wieloplatformowy .NET SDK
Programiści C# migrujący z AForge.NET (AForge.Video, AForge.Vision, AForge.Imaging) do nowoczesnych alternatyw .NET 6-10
Dlaczego warto zastąpić AForge.NET?
AForge.NET został porzucony od lipca 2013 — ponad 12 lat bez aktualizacji, łatek bezpieczeństwa ani poprawek błędów. Jest ukierunkowany na .NET Framework 2.0 i nie może działać na nowoczesnym .NET 6-10 bez forków społecznościowych o różnej jakości.
| Ryzyko | Wpływ |
|---|---|
| Brak łatek bezpieczeństwa | Luki w przetwarzaniu wideo/obrazów pozostają niezałatane |
| Brak wsparcia .NET 6+ | Nie można używać nowoczesnych funkcji .NET, AOT ani wdrożeń wieloplatformowych |
| Brak obsługi nowych kodeków | Brak H.265, AV1, VP9 ani nowoczesnych formatów kontenerowych |
| Brak społeczności | Forum zamknięte w kwietniu 2012, brak aktywnych opiekunów |
| Zależność od DirectShow | Uznany za przestarzały przez Microsoft na rzecz Media Foundation |
| Tylko Windows | Nie można celować w macOS, Linux, iOS, Android |
AForge.Video → VisioForge Video Capture SDK .Net
Mapowanie klas
| Komponent AForge.Video | Zamiennik VisioForge |
|---|---|
| VideoCaptureDevice | VideoCaptureCoreX + VideoCaptureDeviceSourceSettings |
| MJPEGStream | VideoCaptureCoreX + RTSPSourceSettings or UniversalSourceBlock |
| JPEGStream | VideoCaptureCoreX + IPCameraSourceSettings |
| ScreenCaptureStream | VideoCaptureCoreX + ScreenCaptureSourceSettings |
| FileVideoSource | MediaPlayerCoreX (odtwarzanie) lub VideoEditCoreX (przetwarzanie) |
| AsyncVideoSource | Wbudowane — wszystkie źródła VisioForge są domyślnie asynchroniczne |
| NewFrameEventArgs | Zdarzenie OnVideoFrameBuffer |
C# Przechwytywanie z kamery internetowej
AForge.NET — przechwytywanie z kamery (przed)
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# przechwytywanie z kamery (po)
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# Kamera IP RTSP / MJPEG Streaming
AForge.NET — strumień MJPEG (przed)
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# przechwytywanie kamery IP RTSP (po)
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# Przechwytywanie i nagrywanie ekranu
AForge.NET — przechwytywanie ekranu (przed)
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# rejestrator ekranu (po)
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 → Bloki wizji komputerowej VisioForge
Mapowanie klas
| Komponent AForge.Vision | Zamiennik VisioForge |
|---|---|
| MotionDetector | CVMotionCellsBlock — odejmowanie tła MOG2 ze śledzeniem obiektów i przypisywaniem ID |
| TwoFramesDifferenceDetector | CVMotionCellsBlock — MOG2 (history: 500 frames, variance threshold: 40) |
| SimpleBackgroundModelingDetector | CVMotionCellsBlock — automatyczny model tła z wykrywaniem opartym na konturach |
| CustomFrameDifferenceDetector | Konfigurowalne CVMotionCellsSettings |
| MotionAreaHighlighting | CVMotionCellsBlock z DrawEnabled = true — rysuje ramki ograniczające z ID obiektów |
| GridMotionAreaProcessing | Strefowe wykrywanie ruchu za pomocą zdarzeń Video Capture SDK |
| BlobCounter | CVMotionCellsBlock — śledzenie blobów, wykrywanie konturów, zliczanie pojazdów na linii śledzenia |
C# Wykrywanie ruchu i obiektów
AForge.NET — wykrywanie ruchu (przed)
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 — zdarzeniowe wykrywanie ruchu (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 (potok 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# Wykrywanie twarzy i pieszych (niedostępne w AForge)
Mapowanie klas
| Funkcja | Blok VisioForge |
|---|---|
| Wykrywanie twarzy kaskadą Haar | CVFaceDetectBlock — wykrywanie twarzy frontalnej/profilowej, oczu, nosa, ust |
| Wykrywanie twarzy DNN | CVFaceDetectBlock — model Caffe SSD, filtrowanie ufności, akceleracja GPU |
| Wykrywanie twarzy DLib | CVFaceDetectBlock (CVD) — detektor twarzy frontalnej DLib HOG+SVM |
| Wykrywanie pieszych | CVFaceDetectBlock — wbudowany detektor osób HOG+SVM |
| Wykrywanie zasłonięcia obiektywu | CameraCoveredDetectorBlock — wykrywanie krawędzi Canny |
C# Wykrywanie twarzy
AForge.NET (przed)
C#// AForge had no built-in face detection — required manual Haar cascade code
// or using Accord.NET's HaarObjectDetector on top of AForge framesVisioForge — wykrywanie twarzy kaskadą 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 — detektor twarzy DNN (wyższa dokładność, wsparcie GPU)
C#var settings = new CVFaceDetectSettings
{
Confidence = 0.25,
DrawEnabled = true,
BlurFaces = true // built-in privacy blur
};
var detector = new CVFaceDetectBlock(settings);VisioForge — detektor twarzy DLib
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
MinFaceSize = new Size(30, 30)
};
var detector = new CVFaceDetectBlock(settings);C# Wykrywanie pieszych
AForge.NET (przed)
C#// AForge had no pedestrian detection — required manual HOG+SVM implementationVisioForge — wykrywanie pieszych (po)
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
Mapowanie klas
| Funkcja AForge.Imaging | VisioForge wbudowane | Samodzielne OpenCvSharp |
|---|---|---|
| GaussianBlur | CVProcess.BlurRegion() (kernel 23x23) | Cv2.GaussianBlur() |
| Pixellate | CVProcess.PixelateRegion() | Niestandardowe zmniejszanie/powiększanie |
| CannyEdgeDetector | CameraCoveredDetector (thresholds 100/200) | Cv2.Canny() |
| Erosion / Dilation | Używane wewnętrznie przez CVMotionCellsBlock (element strukturalny 5x5) | Cv2.Erode() / Cv2.Dilate() |
| BlobCounter | CVMotionCellsBlock — wykrywanie konturów, filtrowanie powierzchni/proporcji, otoczka wypukła | Cv2.FindContours() |
| Grayscale | Wbudowana konwersja BGR→Gray we wszystkich detektorach | Cv2.CvtColor() |
| Threshold | Wbudowane progowanie binarne w potoku ruchu | Cv2.Threshold() |
| ResizeBilinear | Wbudowane skalowanie wideo we wszystkich ustawieniach detektorów | Cv2.Resize() |
| HistogramEqualization | Używane w CVFaceDetect dla ulepszonego wykrywania | Cv2.EqualizeHist() |
| HSLFiltering / filtry kolorów | — | Cv2.InRange() / Cv2.CvtColor() |
| HoughLineTransformation | — | Cv2.HoughLinesP() |
| SobelEdgeDetector | — | Cv2.Sobel() |
| Dopasowywanie szablonów | — | Cv2.MatchTemplate() |
Lista kontrolna migracji
- Inwentaryzacja referencji AForge — Znajdź wszystkie `using AForge.*` w projekcie
- Zainstaluj pakiety NuGet VisioForge
- Zamień klasy źródeł wideo
- Zamień wykrywanie ruchu
- Zamień wykrywanie twarzy
- Zamień wykrywanie blobów/obiektów
- Usuń ręczne pętle klatek
- Dodaj nagrywanie/streaming
- Celuj w nowoczesny .NET — .NET 6-10
- Testuj wieloplatformowo
- Dla przetwarzania obrazów — VisioForge CV obejmuje rozmycie, pikselizację, Canny, morfologię; użyj OpenCvSharp dla dodatkowych filtrów
Co zyskujesz po migracji
| Możliwość | AForge.NET | Po migracji |
|---|---|---|
| Framework | .NET Framework 2.0 | .NET 6-10 |
| Platformy | Tylko Windows | Windows, macOS, Linux, iOS, Android |
| Przechwytywanie wideo | Podstawowy DirectShow | Profesjonalny SDK z asynchronicznym API |
| Nagrywanie | Ręczna implementacja | Wbudowane (MP4, MKV, AVI, WebM) |
| Kodowanie sprzętowe | Brak | NVENC, QSV, AMF, VideoToolbox |
| Streaming | Brak | RTMP, HLS, SRT, NDI |
| Efekty audio | Brak | 40+ (EQ, reverb, chorus, 3D) |
| Efekty wideo | Brak | Potok GPU + CPU |
| Wykrywanie twarzy | Brak | Haar + DNN (Caffe SSD) + DLib HOG, z rozmyciem/pikselizacją |
| Wykrywanie ruchu | Podstawowe różnicowanie klatek | Odejmowanie tła MOG2 + śledzenie obiektów z ID |
| Wykrywanie pieszych | Brak | Wbudowany detektor osób HOG+SVM |
| Kamery IP | Tylko MJPEG | RTSP, RTMP, HLS, ONVIF |
| Kamera wirtualna | Brak | Wyjście do Zoom/Teams/OBS |
| Utrzymanie | Porzucony (2013) | Aktywny rozwój |
| Bezpieczeństwo | Bez łatek | Regularne aktualizacje |
Frequently Asked Questions
Czy AForge.NET jest nadal utrzymywany?
Nie. AForge.NET został porzucony od lipca 2013 bez aktualizacji, łatek bezpieczeństwa ani wsparcia .NET 6+. Istnieją forki społecznościowe, ale różnią się jakością i utrzymaniem. Użyj VisioForge .Net SDK jako nowoczesnej alternatywy dla AForge.NET.
Jaka jest najlepsza alternatywa dla AForge.NET do przechwytywania wideo w C#?
VisioForge Video Capture SDK .Net zastępuje AForge.Video nowoczesnym asynchronicznym API obsługującym kamery internetowe, kamery IP (RTSP/ONVIF), przechwytywanie ekranu i wyjście do MP4, WebM i innych formatów na .NET 6-10.
Czy VisioForge zastępuje filtry AForge.Imaging?
Częściowo. VisioForge CV zawiera rozmycie, pikselizację, wykrywanie krawędzi Canny, operacje morfologiczne, konwersję do skali szarości i wyrównywanie histogramu. Dla pełnego zakresu filtrów obrazu (Sobel, Hough, filtrowanie kolorów, dopasowywanie szablonów) użyj OpenCvSharp razem z VisioForge.
Czy mogę używać VisioForge do wykrywania twarzy w C# bez AForge?
Tak. VisioForge .Net SDK zawiera trzy wbudowane silniki wykrywania twarzy — kaskadę Haar, oparty na DNN i oparty na DLib — z wbudowanym rozmyciem i pikselizacją prywatności. Nie jest wymagana zależność od AForge ani Accord.NET.
Czy VisioForge obsługuje .NET 6, .NET 8, .NET 9 i .NET 10?
Tak. Wszystkie pakiety VisioForge .Net SDK obsługują .NET 6 do .NET 10, w tym wdrożenia wieloplatformowe na Windows, macOS, Linux, iOS i Android.
Czy mogę migrować z AForge.NET stopniowo?
Tak. SDK VisioForge mogą współistnieć z pakietami AForge.NET podczas migracji. Zastępuj jeden komponent na raz — zacznij od przechwytywania wideo, potem wykrywanie, potem przetwarzanie obrazów — i usuwaj pakiety NuGet AForge po zakończeniu każdego kroku.
