VideoSurveilance应用程序由Emgucv提供捆绑挂起在Raspberry Pi2上

时间:2016-04-18 05:15:55

标签: .net mono monodevelop emgucv raspberry-pi2

当我尝试在Raspberry Pi2上运行VideoSurveilance应用程序时。应用程序挂起,我按照以下步骤进行操作EmguCv Download and Installation Steps

有没有我失踪过的其他例子正在运行正常。

这是我的代码用于blob跟踪

using (CvTracks tracks = new CvTracks())
using (ImageViewer viewer = new ImageViewer())
using (Capture capture = new Capture())
using (Mat fgMask = new Mat())
 {
   //BGStatModel<Bgr> bgModel = new BGStatModel<Bgr>(capture.QueryFrame(), Emgu.CV.CvEnum.BG_STAT_TYPE.GAUSSIAN_BG_MODEL);
    BackgroundSubtractorMOG2 bgModel = new BackgroundSubtractorMOG2(0, 0, true);
   //BackgroundSubstractorMOG bgModel = new BackgroundSubstractorMOG(0, 0, 0, 0);

    capture.ImageGrabbed += delegate(object sender, EventArgs e)
     {
       Mat frame = new Mat();
       capture.Retrieve(frame);
        bgModel.Apply(frame, fgMask);

         using (CvBlobDetector detector = new CvBlobDetector())
         using (CvBlobs blobs = new CvBlobs())
          {
              detector.Detect(fgMask.ToImage<Gray, Byte>(), blobs);
              blobs.FilterByArea(100, int.MaxValue);

              tracks.Update(blobs, 20.0, 10, 0);

              Image<Bgr, Byte> result = new Image<Bgr, byte>(frame.Size);

               using (Image<Gray, Byte> blobMask = detector.DrawBlobsMask(blobs))
                {
                  frame.CopyTo(result, blobMask);
                }
                //CvInvoke.cvCopy(frame, result, blobMask);

                foreach (KeyValuePair<uint, CvTrack> pair in tracks)
                 {
                   if (pair.Value.Inactive == 0) //only draw the active tracks.
                   {
                     CvBlob b = blobs[pair.Value.BlobLabel];
                     Bgr color = detector.MeanColor(b, frame.ToImage<Bgr, Byte>());
                      result.Draw(pair.Key.ToString(), pair.Value.BoundingBox.Location, Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, color);
                        result.Draw(pair.Value.BoundingBox, color, 2);
                        Point[] contour = b.GetContour();
                        result.Draw(contour, new Bgr(0, 0, 255), 1);
                      }
                }

             viewer.Image = frame.ToImage<Bgr, Byte>().ConcateVertical(fgMask.ToImage<Bgr, Byte>().ConcateHorizontal(result));
             }
         };
         capture.Start();
         viewer.ShowDialog();
     }

2 个答案:

答案 0 :(得分:1)

我不熟悉这个项目,但是请阅读您的问题并查看您提供的链接及其main/home page;他们提到并继续提到Raspberry Pi 2,而你只提到了Raspberry Pi。

这是一个微妙的差异,但可能是ARM6架构,RAM或其他方面的限制。如果您使用的是Pi2,那么您可能会忽视,但如果您在Pi2之前处理任何事情,则可能需要解决其他区域以使其兼容。如果它完全支持的话。

答案 1 :(得分:0)

另一件可能导致“挂起”的事情是卡上缺少可用空间。

我会先尝试一下: Expand root filesystem
http://elinux.org/RPi_Resize_Flash_Partitions

检查剩下的空间:

df -h  /