26/01/10 13:49
Federico1976
Salve a Tutti sto cercandi di fare un programmino che mi anilizza un immagine
ho fatto una classe che ha il compito di trovare tutti gli oggetti o aree in un immagine
e uso un thread dichiaro le immagini a livello di classe però mi da errore come da titolo
quando la nodifico posto un po di codice
non riesco proprio a capire perche fa quell'errore vi ringrazio tanto dell'aiuto
ho fatto una classe che ha il compito di trovare tutti gli oggetti o aree in un immagine
e uso un thread dichiaro le immagini a livello di classe però mi da errore come da titolo
quando la nodifico posto un po di codice
Public Function Area(ByVal P As Point, ByVal img As Bitmap, ByVal Coefficente As Integer) As List(Of Point) 'P punto dove hai cliccato col secchiello 'B è la bitmap In questione Dim Points As New List(Of Point) Dim NewPoints As New List(Of Point) Dim ColoreAttuale As Color = Nothing Dim ColoreOggetto As Color = img.GetPixel(P.X, P.Y) Dim ArrayPoint As New List(Of Point) Points.Add(P) Do Try For Each K As Point In Points Dim J As Point Dim d As Point Dim s As Point Dim Sot As Point 'testa il punto a destra di questo If K.X > 0 Then J = New Point(K.X - 1, K.Y) Else J = New Point(K.X, K.Y) End If ColoreAttuale = img.GetPixel(J.X, J.Y) If IsNearestColor(ColoreOggetto, ColoreAttuale, Coefficente) = True Then 'Funzione Di Confronto Colore con coefficente If PuntiInseriti.IndexOf(J) = -1 Then immagineRed.SetPixel(J.X, J.Y, Color.Red)' immagine appartenente alla classe che da errore NewPoints.Add(J) PuntiInseriti.Add(J) ArrayPoint.Add(J) End If End If If d.X < img.Width - 1 Then d = New Point(K.X + 1, K.Y) End If ColoreAttuale = img.GetPixel(d.X, d.Y) Dim si As String = ColoreAttuale.ToString If IsNearestColor(ColoreOggetto, ColoreAttuale, Coefficente) = True Then If PuntiInseriti.IndexOf(d) = -1 Then immagineRed.SetPixel(d.X, d.Y, Color.Red)' immagine appartenente alla classe che da errore NewPoints.Add(d) PuntiInseriti.Add(d) ArrayPoint.Add(d) End If End If If K.Y > 0 Then s = New Point(K.X, K.Y - 1) End If ColoreAttuale = img.GetPixel(s.X, s.Y) If IsNearestColor(ColoreOggetto, ColoreAttuale, Coefficente) = True Then If PuntiInseriti.IndexOf(s) = -1 Then immagineRed.SetPixel(s.X, s.Y, Color.Red)' immagine appartenente alla classe che da errore NewPoints.Add(s) PuntiInseriti.Add(s) ArrayPoint.Add(s) End If End If If Sot.Y < img.Height - 2 Then Sot = New Point(K.X, K.Y + 1) Else End If If Sot.Y < img.Height Then ColoreAttuale = img.GetPixel(Sot.X, Sot.Y) If IsNearestColor(ColoreOggetto, ColoreAttuale, Coefficente) = True Then If PuntiInseriti.IndexOf(Sot) = -1 Then immagineRed.SetPixel(Sot.X, Sot.Y, Color.Red)' immagine appartenente alla classe che da errore NewPoints.Add(Sot) PuntiInseriti.Add(Sot) ArrayPoint.Add(Sot) End If End If End If Next Catch ex As Exception MsgBox("Area: " & ex.Message & vbCrLf & ex.StackTrace) End Try Points.Clear() Points.AddRange(NewPoints) NewPoints.Clear() Loop Until Points.Count = 0 immagineRed = img Return ArrayPoint End Function
non riesco proprio a capire perche fa quell'errore vi ringrazio tanto dell'aiuto
Ultima modifica effettuata da Il Totem 27/01/10 9:03
aaa