diegobill Postado Dezembro 19, 2009 Denunciar Share Postado Dezembro 19, 2009 Está função trabalha em cima de vários frames(Bitmaps) de um vídeo, porém o programa trava quando chega na linha de comando:"classificacao = ClassificarMLP(ptr[pix + 2], ptr[pix + 1], ptr[pix]);" e recebo está mensagem:AccessViolationException was unhandledTentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada.Segue o código-fonte:void Orientacao(Bitmap imagem, ArrayList objetos, int qt_objetos, double raio) { int i,j; int classificacao; double raio_temp1,raio_temp2; Posicao ponto = new Posicao(); Bitmap image = (Bitmap)imagem.Clone(); BitmapData data = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); unsafe { byte* ptr = (byte*)(data.Scan0); Int32 pix; for (i = 0; i < qt_objetos; i++) { if (((Objeto)objetos[i]).rotulo == 0) { for (j = 0; j < 90; j++) { raio_temp2 = j * 4 * 0.01745; raio_temp1 = Math.Cos(raio_temp2); raio_temp2 = Math.Sin(raio_temp2); if ((((Objeto)objetos[i]).ponto.x + (int)(raio * raio_temp1)) < data.Height && (((Objeto)objetos[i]).ponto.x + (int)(raio * raio_temp1)) > 0 && 3 * (((Objeto)objetos[i]).ponto.y + (int)(raio * raio_temp2)) < data.Width && 3 * (((Objeto)objetos[i]).ponto.y + (int)(raio * raio_temp2)) > 0) { pix = ((((Objeto)objetos[i]).ponto.x + (int)(raio * raio_temp1)) * data.Stride + 3 * (((Objeto)objetos[i]).ponto.y + (int)(raio * raio_temp2))); classificacao = ClassificarMLP(ptr[pix + 2], ptr[pix + 1], ptr[pix]); if (classificacao > -1) //ciano, rosa ou ver { j += 3; raio_temp2 = j * 4 * 0.01745; raio_temp1 = Math.Cos(raio_temp2); raio_temp2 = Math.Sin(raio_temp2); pix = ((((Objeto)objetos[i]).ponto.x + (int)(raio * raio_temp1)) * data.Stride + 3 * (((Objeto)objetos[i]).ponto.y + (int)(raio * raio_temp2))); classificacao = ClassificarMLP(ptr[pix + 2], ptr[pix + 1], ptr[pix]); ponto.x = ((Objeto)objetos[i]).ponto.x + (int)(raio * raio_temp1); ponto.y = ((Objeto)objetos[i]).ponto.y + (int)(raio * raio_temp2); if (classificacao > -1) { ponto = CentroideNovo(ponto, image, 1); j += 20; switch (classificacao) { case 0: //((Objeto)objetos[i]).ponto.ang = ((Objeto)objetos[i]).ponto.Angulo(ponto); //ciano break; case 1: ((Objeto)objetos[i]).ponto.ang = ((Objeto)objetos[i]).ponto.Angulo(ponto);//ImagemProcessada->Picture->Bitmap->Canvas->Brush->Color=(TColor)16744703; //rosa break; case 2: //((Objeto)objetos[i]).ponto.ang = ((Objeto)objetos[i]).ponto.Angulo(ponto); //verde break; } } } } else { j++; } } } } } image.UnlockBits(data); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quintelab Postado Dezembro 21, 2009 Denunciar Share Postado Dezembro 21, 2009 O que faz o seu método ClassificarMLP ?Abraços... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 diegobill Postado Dezembro 22, 2009 Autor Denunciar Share Postado Dezembro 22, 2009 é uma função que através dos valores RGB do pixel classifica o pixel em ciano, rosa, verde ou preto utilizando uma rede neural MLP Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 diegobill Postado Dezembro 24, 2009 Autor Denunciar Share Postado Dezembro 24, 2009 vlw ae galera... brigadaum... consegui resolver o problema.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quintelab Postado Janeiro 10, 2010 Denunciar Share Postado Janeiro 10, 2010 Poste a solução.Abraços... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
diegobill
Está função trabalha em cima de vários frames(Bitmaps) de um vídeo, porém o programa trava quando chega na linha de comando:
"classificacao = ClassificarMLP(ptr[pix + 2], ptr[pix + 1], ptr[pix]);" e recebo está mensagem:
AccessViolationException was unhandled
Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada.
Segue o código-fonte:
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.