VisioForge

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.

RyzykoWpływ
Brak łatek bezpieczeństwaLuki 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ówBrak H.265, AV1, VP9 ani nowoczesnych formatów kontenerowych
Brak społecznościForum zamknięte w kwietniu 2012, brak aktywnych opiekunów
Zależność od DirectShowUznany za przestarzały przez Microsoft na rzecz Media Foundation
Tylko WindowsNie można celować w macOS, Linux, iOS, Android

AForge.Video → VisioForge Video Capture SDK .Net

Mapowanie klas

Komponent AForge.VideoZamiennik VisioForge
VideoCaptureDeviceVideoCaptureCoreX + VideoCaptureDeviceSourceSettings
MJPEGStreamVideoCaptureCoreX + RTSPSourceSettings or UniversalSourceBlock
JPEGStreamVideoCaptureCoreX + IPCameraSourceSettings
ScreenCaptureStreamVideoCaptureCoreX + ScreenCaptureSourceSettings
FileVideoSourceMediaPlayerCoreX (odtwarzanie) lub VideoEditCoreX (przetwarzanie)
AsyncVideoSourceWbudowane — wszystkie źródła VisioForge są domyślnie asynchroniczne
NewFrameEventArgsZdarzenie 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.VisionZamiennik VisioForge
MotionDetectorCVMotionCellsBlock — odejmowanie tła MOG2 ze śledzeniem obiektów i przypisywaniem ID
TwoFramesDifferenceDetectorCVMotionCellsBlock — MOG2 (history: 500 frames, variance threshold: 40)
SimpleBackgroundModelingDetectorCVMotionCellsBlock — automatyczny model tła z wykrywaniem opartym na konturach
CustomFrameDifferenceDetectorKonfigurowalne CVMotionCellsSettings
MotionAreaHighlightingCVMotionCellsBlock z DrawEnabled = true — rysuje ramki ograniczające z ID obiektów
GridMotionAreaProcessingStrefowe wykrywanie ruchu za pomocą zdarzeń Video Capture SDK
BlobCounterCVMotionCellsBlock — ś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 matching

C# Wykrywanie twarzy i pieszych (niedostępne w AForge)

Mapowanie klas

FunkcjaBlok VisioForge
Wykrywanie twarzy kaskadą HaarCVFaceDetectBlock — wykrywanie twarzy frontalnej/profilowej, oczu, nosa, ust
Wykrywanie twarzy DNNCVFaceDetectBlock — model Caffe SSD, filtrowanie ufności, akceleracja GPU
Wykrywanie twarzy DLibCVFaceDetectBlock (CVD) — detektor twarzy frontalnej DLib HOG+SVM
Wykrywanie pieszychCVFaceDetectBlock — wbudowany detektor osób HOG+SVM
Wykrywanie zasłonięcia obiektywuCameraCoveredDetectorBlock — 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 frames

VisioForge — 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 implementation

VisioForge — 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 detection

AForge.Imaging → VisioForge CV + OpenCvSharp

Mapowanie klas

Funkcja AForge.ImagingVisioForge wbudowaneSamodzielne OpenCvSharp
GaussianBlurCVProcess.BlurRegion() (kernel 23x23)Cv2.GaussianBlur()
PixellateCVProcess.PixelateRegion()Niestandardowe zmniejszanie/powiększanie
CannyEdgeDetectorCameraCoveredDetector (thresholds 100/200)Cv2.Canny()
Erosion / DilationUżywane wewnętrznie przez CVMotionCellsBlock (element strukturalny 5x5)Cv2.Erode() / Cv2.Dilate()
BlobCounterCVMotionCellsBlock — wykrywanie konturów, filtrowanie powierzchni/proporcji, otoczka wypukłaCv2.FindContours()
GrayscaleWbudowana konwersja BGR→Gray we wszystkich detektorachCv2.CvtColor()
ThresholdWbudowane progowanie binarne w potoku ruchuCv2.Threshold()
ResizeBilinearWbudowane skalowanie wideo we wszystkich ustawieniach detektorówCv2.Resize()
HistogramEqualizationUżywane w CVFaceDetect dla ulepszonego wykrywaniaCv2.EqualizeHist()
HSLFiltering / filtry kolorówCv2.InRange() / Cv2.CvtColor()
HoughLineTransformationCv2.HoughLinesP()
SobelEdgeDetectorCv2.Sobel()
Dopasowywanie szablonówCv2.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.NETPo migracji
Framework.NET Framework 2.0.NET 6-10
PlatformyTylko WindowsWindows, macOS, Linux, iOS, Android
Przechwytywanie wideoPodstawowy DirectShowProfesjonalny SDK z asynchronicznym API
NagrywanieRęczna implementacjaWbudowane (MP4, MKV, AVI, WebM)
Kodowanie sprzętoweBrakNVENC, QSV, AMF, VideoToolbox
StreamingBrakRTMP, HLS, SRT, NDI
Efekty audioBrak40+ (EQ, reverb, chorus, 3D)
Efekty wideoBrakPotok GPU + CPU
Wykrywanie twarzyBrakHaar + DNN (Caffe SSD) + DLib HOG, z rozmyciem/pikselizacją
Wykrywanie ruchuPodstawowe różnicowanie klatekOdejmowanie tła MOG2 + śledzenie obiektów z ID
Wykrywanie pieszychBrakWbudowany detektor osób HOG+SVM
Kamery IPTylko MJPEGRTSP, RTMP, HLS, ONVIF
Kamera wirtualnaBrakWyjście do Zoom/Teams/OBS
UtrzymaniePorzucony (2013)Aktywny rozwój
BezpieczeństwoBez łatekRegularne 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.

Rozpocznij migrację

Powiązane przewodniki migracji