Example #1
0
        // Dictionary<int, MonitorDePessoa> dicionarioMonitores = new Dictionary<int, MonitorDePessoa>();

        public ProcessadorBlob(String pNomeDoArquivo, JanelaDeMonitoramentoBlob pJanelaMonitoramento, ParametrosDinamicos pParametros)
            : base(pNomeDoArquivo)
        {
            mJanelaMonitoramento = pJanelaMonitoramento;
            mEtapa     = 2;
            parametros = pParametros;
        }
Example #2
0
 public ProcessadorBlob(String pNomeDoArquivo, DefinirAreaRestrita pJanelaMonitoramento, ParametrosDinamicos pParametros)
     : base(pNomeDoArquivo)
 {
     mJanelaAreaRestrita = pJanelaMonitoramento;
     parametros          = pParametros;
     mEtapa = 1; //indica que é Mapeamento
 }
 public ProcessadorBlob(String pNomeDoArquivo, DefinirAreaRestrita pJanelaMonitoramento, ParametrosDinamicos pParametros)
     : base(pNomeDoArquivo)
 {
     mJanelaAreaRestrita = pJanelaMonitoramento;
     parametros = pParametros;
     mEtapa = 1; //indica que é Mapeamento
 }
       // Dictionary<int, MonitorDePessoa> dicionarioMonitores = new Dictionary<int, MonitorDePessoa>();

        public ProcessadorBlob(String pNomeDoArquivo, JanelaDeMonitoramentoBlob pJanelaMonitoramento, ParametrosDinamicos pParametros)
            : base(pNomeDoArquivo)
        {
            mJanelaMonitoramento = pJanelaMonitoramento;
            mEtapa = 2;
            parametros = pParametros;
        }
 //Calibração
 private void calibracao_Click(object sender, EventArgs e)
 {
     JanelaDeCalibracao vJanela = new JanelaDeCalibracao();
     parametros = new ParametrosDinamicos();
     if (mProcessador != null)
         parametros = mProcessador.obterParametros();
     vJanela.Visible = true;
     mProcessador = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
     mProcessador.calibrar();
 }
 //Blob
 private void button1_Click(object sender, EventArgs e)
 {
     parametros = new ParametrosDinamicos();
     if (mProcessador != null)
         parametros = mProcessador.obterParametros();
     JanelaDeMonitoramentoBlob vJanela = new JanelaDeMonitoramentoBlob();
     vJanela.Visible = true;
     mProcessador = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
     mProcessador.mapear();
 }
Example #7
0
 protected override void atualizarParametros(ParametrosDinamicos parametros)
 {
     if (mJanelaMonitoramento.AtualizarParametros)
     {
         mJanelaMonitoramento.AtualizarParametros = false;
         parametros.TempoMaximoEmCena             = Convert.ToInt32(mJanelaMonitoramento.TempoMaximoEmCena);
         parametros.NumeroMaximoDeInversoesDeRota = mJanelaMonitoramento.NumeroInversoes;
         parametros.VelocidadeMaxima = mJanelaMonitoramento.VelocidadeMaxima;
     }
 }
Example #8
0
 protected override void carregarParametrosNaTela(ParametrosDinamicos parametros)
 {
     if (parametros == null)
     {
         parametros = new ParametrosDinamicos();
     }
     mJanelaMonitoramento.NumeroInversoes   = parametros.NumeroMaximoDeInversoesDeRota;
     mJanelaMonitoramento.VelocidadeMaxima  = parametros.VelocidadeMaxima;
     mJanelaMonitoramento.TempoMaximoEmCena = parametros.TempoMaximoEmCena;
 }
 //Mapeamento
 private void button3_Click(object sender, EventArgs e)
 {
     if(mProcessador != null)
         parametros = mProcessador.obterParametros();
     if (parametros == null)
         parametros = new ParametrosDinamicos();
     DefinirAreaRestrita vJanela = new DefinirAreaRestrita();
     vJanela.Visible = true;
     mProcessador = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
     mProcessador.mapear();
 }
Example #10
0
        //Blob
        private void button1_Click(object sender, EventArgs e)
        {
            parametros = new ParametrosDinamicos();
            if (mProcessador != null)
            {
                parametros = mProcessador.obterParametros();
            }
            JanelaDeMonitoramentoBlob vJanela = new JanelaDeMonitoramentoBlob();

            vJanela.Visible = true;
            mProcessador    = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
            mProcessador.mapear();
        }
Example #11
0
        //Calibração
        private void calibracao_Click(object sender, EventArgs e)
        {
            JanelaDeCalibracao vJanela = new JanelaDeCalibracao();

            parametros = new ParametrosDinamicos();
            if (mProcessador != null)
            {
                parametros = mProcessador.obterParametros();
            }
            vJanela.Visible = true;
            mProcessador    = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
            mProcessador.calibrar();
        }
Example #12
0
        //Mapeamento
        private void button3_Click(object sender, EventArgs e)
        {
            if (mProcessador != null)
            {
                parametros = mProcessador.obterParametros();
            }
            if (parametros == null)
            {
                parametros = new ParametrosDinamicos();
            }
            DefinirAreaRestrita vJanela = new DefinirAreaRestrita();

            vJanela.Visible = true;
            mProcessador    = new ProcessadorBlob(ParametrosConstantes.NomeDoArquivo, vJanela, parametros);
            mProcessador.mapear();
        }
Example #13
0
 public ProcessadorBlob(String pNomeDoArquivo, JanelaDeCalibracao pJanelaCalibracao, ParametrosDinamicos pParametros)
     : base(pNomeDoArquivo)
 {
     mJanelaCalibracao = pJanelaCalibracao;
     parametros        = pParametros;
 }
Example #14
0
        protected override void desenharNaImagem(ParametrosDinamicos parametros)
        {
            if (parametros.PontosAreaRestrita != null && parametros.PontosAreaRestrita.Count > 0)
            {
                for (int i = 1; i < parametros.PontosAreaRestrita.Count; i++)
                {
                    //CvInvoke.cvLine(mImagemColorida, parametros.PontosAreaRestrita[i - 1], parametros.PontosAreaRestrita[i], new MCvScalar(255, 0, 0, 0), 1, LINE_TYPE.CV_AA, 0);
                    CvInvoke.Line(mImagemColorida, parametros.PontosAreaRestrita[i - 1], parametros.PontosAreaRestrita[i], new MCvScalar(255, 0, 0, 0), 1, LineType.AntiAlias, 0);
                }
            }

            List <MonitorDePessoa> vPessoasEmCena = new List <MonitorDePessoa>();

            foreach (CvBlob blob2 in mblobs.Values)
            {
                MCvBlob blob = new MCvBlob();
                blob.Center = blob2.Centroid;
                blob.Size   = blob2.BoundingBox.Size;

                if (blob.Size.Height > blob.Size.Width && blob.Center.X > 70 && blob.Center.X < 565 || dicionarioMonitores.ContainsKey(blob.ID))//verificarSeEhTamanhoDePessoa(blob.Size.Height, blob.Size.Width, blob.Center.X, blob.Center.Y))
                {
                    MonitorDePessoa vMonitorAtual = obterMonitorDePessoa(blob);
                    vMonitorAtual.adicionarNovoBlob(blob, base.mContadorDeFrames);
                    List <Point> vPontos = vMonitorAtual.obterPontos();
                    // desenharCaminho(vPontos);
                    Point     p1 = new Point((int)((blob.Center.X - blob.Size.Width / 2) * 0.98), (int)((blob.Center.Y - blob.Size.Height / 2) * 0.98));
                    Point     p2 = new Point((int)((blob.Center.X + blob.Size.Width / 2) * 1.08), (int)((blob.Center.Y + blob.Size.Height / 2) * 1.08));
                    MCvScalar corTexto;
                    parametros.RetanguloPessoa = new Rectangle(new Point(p1.X, p2.Y), new Size(p2.X - p1.X, p2.Y - p1.Y));
                    if (vMonitorAtual.verificarSePossuiComportamentoSuspeito(parametros).Suspeito)
                    {
                        corTexto = new MCvScalar(0, 0, 255, 0);
                    }
                    else
                    {
                        corTexto = new MCvScalar(0, 255, 0, 0);
                    }

                    //CvInvoke.cvRectangle(mImagemColorida, p1, p2, corTexto, 1, LINE_TYPE.CV_AA, 0);
                    CvInvoke.Rectangle(mImagemColorida, blob2.BoundingBox, new MCvScalar(255.0, 255.0, 255.0), 2);
                    p1.Y = p1.Y - 10;
                    escreverId(blob.ID.ToString(), p1, corTexto);
                    vPessoasEmCena.Add(vMonitorAtual);
                }
            }
            mJanelaMonitoramento.GridPessoasMonitoradas.Rows.Clear();
            foreach (MonitorDePessoa vPessoa in vPessoasEmCena)
            {
                RespostaVerificacao resposta   = vPessoa.verificarSePossuiComportamentoSuspeito(parametros);
                DataGridViewRow     vNovaLinha = new DataGridViewRow();
                vNovaLinha.CreateCells(mJanelaMonitoramento.GridPessoasMonitoradas, new String[] { vPessoa.obterIdentificador().ToString(), vPessoa.obterVelocidadeMetroPorSegundo().ToString(),
                                                                                                   vPessoa.obterVelocidadeKmPorHora().ToString(), vPessoa.obterTempoEmCena().ToString(), vPessoa.obterNumeroDeInversoes().ToString(),
                                                                                                   resposta.Mensagem });
                vNovaLinha.DefaultCellStyle.BackColor          = resposta.Suspeito ? Color.Red : Color.Green;
                vNovaLinha.DefaultCellStyle.SelectionBackColor = vNovaLinha.DefaultCellStyle.BackColor;
                mJanelaMonitoramento.GridPessoasMonitoradas.Rows.Add(vNovaLinha);
            }

            mSalvarImagem = mJanelaMonitoramento.SalvarImagem;
            mJanelaMonitoramento.SalvarImagem = false;
        }
 public ProcessadorBlob(String pNomeDoArquivo, JanelaDeCalibracao pJanelaCalibracao, ParametrosDinamicos pParametros)
     : base(pNomeDoArquivo)
 {
     mJanelaCalibracao = pJanelaCalibracao;
     parametros = pParametros;
 }
 protected override void carregarParametrosNaTela(ParametrosDinamicos parametros)
 {
     if (parametros == null)
         parametros = new ParametrosDinamicos();
     mJanelaMonitoramento.NumeroInversoes = parametros.NumeroMaximoDeInversoesDeRota;
     mJanelaMonitoramento.VelocidadeMaxima = parametros.VelocidadeMaxima;
     mJanelaMonitoramento.TempoMaximoEmCena = parametros.TempoMaximoEmCena;
 }
        protected override void atualizarParametros(ParametrosDinamicos parametros)
        {
            if (mJanelaMonitoramento.AtualizarParametros)
            {
                mJanelaMonitoramento.AtualizarParametros = false;
                parametros.TempoMaximoEmCena = Convert.ToInt32(mJanelaMonitoramento.TempoMaximoEmCena);
                parametros.NumeroMaximoDeInversoesDeRota = mJanelaMonitoramento.NumeroInversoes;
                parametros.VelocidadeMaxima = mJanelaMonitoramento.VelocidadeMaxima;

            }
        }
        protected override void desenharNaImagem(ParametrosDinamicos parametros)
        {
            if (parametros.PontosAreaRestrita != null && parametros.PontosAreaRestrita.Count > 0)
            {
                for (int i = 1; i < parametros.PontosAreaRestrita.Count; i++)
                {
                    //CvInvoke.cvLine(mImagemColorida, parametros.PontosAreaRestrita[i - 1], parametros.PontosAreaRestrita[i], new MCvScalar(255, 0, 0, 0), 1, LINE_TYPE.CV_AA, 0);
                    CvInvoke.Line(mImagemColorida, parametros.PontosAreaRestrita[i - 1], parametros.PontosAreaRestrita[i], new MCvScalar(255, 0, 0, 0), 1, LineType.AntiAlias , 0);
                }
            }

            List<MonitorDePessoa> vPessoasEmCena = new List<MonitorDePessoa>();
            foreach (CvBlob blob2 in mblobs.Values)
            {
                MCvBlob blob = new MCvBlob();
                blob.Center = blob2.Centroid;
                blob.Size = blob2.BoundingBox.Size;
                
                if (blob.Size.Height > blob.Size.Width && blob.Center.X > 70 && blob.Center.X < 565 || dicionarioMonitores.ContainsKey(blob.ID))//verificarSeEhTamanhoDePessoa(blob.Size.Height, blob.Size.Width, blob.Center.X, blob.Center.Y))
                {
                    MonitorDePessoa vMonitorAtual = obterMonitorDePessoa(blob);
                    vMonitorAtual.adicionarNovoBlob(blob, base.mContadorDeFrames);
                    List<Point> vPontos = vMonitorAtual.obterPontos();
                   // desenharCaminho(vPontos);
                    Point p1 = new Point((int)((blob.Center.X - blob.Size.Width/2)*0.98), (int)((blob.Center.Y - blob.Size.Height/2)*0.98));
                    Point p2 = new Point((int)((blob.Center.X + blob.Size.Width/2)*1.08), (int)((blob.Center.Y + blob.Size.Height/2)*1.08));
                    MCvScalar corTexto;
                    parametros.RetanguloPessoa = new Rectangle(new Point(p1.X, p2.Y), new Size(p2.X-p1.X, p2.Y-p1.Y));
                    if (vMonitorAtual.verificarSePossuiComportamentoSuspeito(parametros).Suspeito)
                        corTexto = new MCvScalar(0, 0, 255, 0);
                    else
                        corTexto = new MCvScalar(0, 255, 0, 0);

                    //CvInvoke.cvRectangle(mImagemColorida, p1, p2, corTexto, 1, LINE_TYPE.CV_AA, 0);                    
                    CvInvoke.Rectangle(mImagemColorida, blob2.BoundingBox, new MCvScalar(255.0, 255.0, 255.0), 2);
                    p1.Y = p1.Y - 10;
                    escreverId(blob.ID.ToString(), p1, corTexto);
                    vPessoasEmCena.Add(vMonitorAtual);
                }
            }
            mJanelaMonitoramento.GridPessoasMonitoradas.Rows.Clear();
            foreach(MonitorDePessoa vPessoa in vPessoasEmCena)
            {
                RespostaVerificacao resposta = vPessoa.verificarSePossuiComportamentoSuspeito(parametros);
                DataGridViewRow vNovaLinha = new DataGridViewRow();
                vNovaLinha.CreateCells(mJanelaMonitoramento.GridPessoasMonitoradas, new String[]{vPessoa.obterIdentificador().ToString(), vPessoa.obterVelocidadeMetroPorSegundo().ToString(),
                    vPessoa.obterVelocidadeKmPorHora().ToString(), vPessoa.obterTempoEmCena().ToString(), vPessoa.obterNumeroDeInversoes().ToString(),
                    resposta.Mensagem});
                vNovaLinha.DefaultCellStyle.BackColor = resposta.Suspeito ? Color.Red : Color.Green;
                vNovaLinha.DefaultCellStyle.SelectionBackColor = vNovaLinha.DefaultCellStyle.BackColor;
                mJanelaMonitoramento.GridPessoasMonitoradas.Rows.Add(vNovaLinha);
            }

            mSalvarImagem = mJanelaMonitoramento.SalvarImagem;
            mJanelaMonitoramento.SalvarImagem = false;
        }