Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Приложение а

Цель работы

Знакомство с основными принципами и инструментами построения систем обработки видеопотока используемыми в сфере обеспечения безопасности, на основе решения задачи контроля движения в заданных зонах.

Задание на работу

Вариант №4.

Метод выделения движения на основе истории перемещения MHI.

Текст программы

Полный текст программы приведён в ПРИЛОЖЕНИИ А.

Тестовый пример программы

Рисунок 2. Обнаружение движения (кисть)

Рисунок 3. Обнаружение движения в статически заданной области

Заключение

Данная работа была выполнена с помощью кроссплатформенной «обёртки» для.NET библиотеки обработки изображений Emgu CV. Мы ознакомились с основными принципами и инструментами построения системы обработки видеопотока, используемыми в сфере обеспечения безопасности, на основе решения задачи контроля движения в заданной зоне.


ПРИЛОЖЕНИЕ А

Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Windows;

using Emgu.CV;

using Emgu.CV.Structure;

using Emgu.CV.Util;

using Emgu.CV.CvEnum;

using Emgu.CV.VideoSurveillance;

using Emgu.Util;

namespace TRY_3

{

public partial class Form1: Form

{

private Capture capture;

private MotionHistory motionHistory;

private BackgroundSubtractor forgroundDetector;

 

public Form1()

{

InitializeComponent();

 

if (capture == null)

{

try

{

capture = new Capture();

motionHistory = new MotionHistory(

1.0, //in second, the duration of motion history you wants to keep

0.05, //in second, maxDelta for cvCalcMotionGradient

0.5); //in second, minDelta for cvCalcMotionGradient

 

capture.ImageGrabbed += ProcessFrame;

capture.Start();

}

catch (NullReferenceException excpt)

{

MessageBox.Show(excpt.Message);

}

}

}

static Rectangle zone = new Rectangle();

private Mat segMask = new Mat();

private Mat forgroundMask = new Mat();

private void ProcessFrame(object sender, EventArgs e)

{

Mat image = new Mat();

capture.Retrieve(image);

if (forgroundDetector == null)

{

forgroundDetector = new BackgroundSubtractorMOG2();

}

forgroundDetector.Apply(image, forgroundMask);

motionHistory.Update(forgroundMask);

 

Rectangle[] rects;

using (VectorOfRect boundingRect = new VectorOfRect())

{

motionHistory.GetMotionComponents(segMask, boundingRect);

rects = boundingRect.ToArray();

}

 

zone.X = 10;

zone.Y = 100;

zone.Width = 100;

zone.Height = 300;

 

DrawMotion(image, zone, new MCvScalar(255, 255, 255));

 

double minArea = 10000;

foreach (Rectangle comp in rects)

{

int area = comp.Width * comp.Height;

//reject the components that have small area;

if (area < minArea) continue;

//центр тяжести прямоугольника

double x = comp.X + (comp.Width) / 2;

double y = comp.Y + (comp.Height) / 2;

//

if (zone.X < = x & & x < = (zone.X + zone.Width) & & zone.Y < = y & & y < = (zone.Y + zone.Height))

{

CvInvoke.Rectangle(image, comp, new MCvScalar(0, 0, 255));

imageBox1.Image = image;

MessageBox.Show(" Motion detection!!! ");

}

else

{

//Draw each individual motion in blue

DrawMotion(image, comp, new MCvScalar(255, 0, 0));

}

}

imageBox1.Image = image;

imageBox2.Image = forgroundMask;

}

 

private static void DrawMotion(IInputOutputArray image, Rectangle motionRegion, MCvScalar color)

{

CvInvoke.Rectangle(image, motionRegion, color);

}

}

}

 

<== предыдущая лекция | следующая лекция ==>
САМО…САМО…САМО… все САМО быть должно, а не смотря в рот кому угодно, пусть даже Леониду. | Материальный баланс массообменных процессов
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал