كيفية إعداد الكشف عن الحركة باستخدام Aforge؟
-
20-09-2019 - |
سؤال
أحاول إعداد COMMATEDECENTER باستخدام إطار AFORGE.NET. أنا أستخدم المعلومات المقدمة هذه صفحة.
لقد قمت بإعداد مقاطع فيديو DirectShow التي تغذي جزءًا من سطح المكتب الخاص بي عبر دفق. يمكنني اختيار هذا الدفق في عينة مشروع videoplayer الذي يتم توفيره مع Aforge. (وأرى سطح المكتب الخاص بي عبر اللاعب).
ومع ذلك ، عندما أقوم بتشغيل الكود أدناه ، أتلقى nullreferenceException. ماذا ينقصني؟
// New frame received by the player
private void videoSourcePlayer_NewFrame( object sender, ref Bitmap image )
{
if (this.detector.ProcessFrame(image) > 0.02)
{
Console.WriteLine("Motion");
}
else
{
Console.WriteLine("No motion");
}
}
ال detector
تتم تهيئته كمتغير فئة خاصة عند اختيار مقاطع الفيديو.
private MotionDetector detector;
private BlobCountingObjectsProcessing motionProcessor;
// Open video source
private void OpenVideoSource( IVideoSource source )
{
BlobCountingObjectsProcessing motionProcessor = new BlobCountingObjectsProcessing();
MotionDetector detector = new MotionDetector(
new SimpleBackgroundModelingDetector(),
motionProcessor);
}
المحلول
ألق نظرة على BlobCountingObjectsProcessing motionProcessor
, ، يبدو أنك أعلنت المتغير مرتين ، مرة واحدة لم يتم تهيئتها وتهيئة مرة واحدة.
نطاق طريقة خارجي واحد ونطاق طريقة واحد داخل.
أعتقد أن هذا هو المكان الذي يأتي منه NullReferenceException.
لا تنتمي إلى StackOverflow