// Dictionary<int, MonitorDePessoa> dicionarioMonitores = new Dictionary<int, MonitorDePessoa>(); public ProcessadorBlob(String pNomeDoArquivo, JanelaDeMonitoramentoBlob pJanelaMonitoramento, ParametrosDinamicos pParametros) : base(pNomeDoArquivo) { mJanelaMonitoramento = pJanelaMonitoramento; mEtapa = 2; parametros = pParametros; }
public ProcessadorBlob(String pNomeDoArquivo, DefinirAreaRestrita pJanelaMonitoramento, ParametrosDinamicos pParametros) : base(pNomeDoArquivo) { mJanelaAreaRestrita = pJanelaMonitoramento; parametros = pParametros; mEtapa = 1; //indica que é Mapeamento }
//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(); }
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 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(); }
//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(); }
//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(); }
//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(); }
public ProcessadorBlob(String pNomeDoArquivo, JanelaDeCalibracao pJanelaCalibracao, ParametrosDinamicos pParametros) : base(pNomeDoArquivo) { mJanelaCalibracao = pJanelaCalibracao; parametros = pParametros; }
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; }
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 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; }