none
Individuazione regione di colore RRS feed

  • Domanda

  • Ciao!

    Sono di nuovo qui perchè mi possiate dare un "consiglio-idea" per come rintracciare un'intera area di colore (non il pixel) in un picturebox e successivamente cerchiarlo o evidenziarlo pensavo con drawrectangle.

    Intato per individuare il colore pixel ho elaborato questo script basilare:

            Dim Xcount As Integer = 0
            Dim Ycount As Integer = 0
            Dim btm As Bitmap = pb.Image
            For Xcount = 0 To btm.Width - 1
                For Ycount = 0 To btm.Height - 1
                    Select Case btm.GetPixel(Xcount, Ycount).GetBrightness
                        Case Color.Black.GetBrightness
                           '...
                    End Select
                Next
            Next

    Help me please!!!

    Ciao! ;)

    mercoledì 7 maggio 2014 11:44

Risposte

  • Grazie

    prego.

    la soluzione è lontana però guarda se usi un

    TableLayoutPanel1

    forse impostando la griglia in modo che bloccando alcuni pixel e sbloccando altri

    si puo creare ovalshape solo su colore desiderato

    Imports Microsoft.VisualBasic.PowerPacks
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For i As Integer = 1 To 56
                Dim picturebox1 As New PictureBox
                Dim shapecontainer1 As New ShapeContainer
                Dim ovalshape1 As New OvalShape
                shapecontainer1.Parent = picturebox1
                ovalshape1.Parent = shapecontainer1
                ovalshape1.Size = New System.Drawing.Size(30, 30)
                ovalshape1.BorderColor = Color.Red
                Me.TableLayoutPanel1.Controls.Add(picturebox1)
            Next
        End Sub
    End Class


    giovedì 15 maggio 2014 19:44

Tutte le risposte

  • Ciao, ti posto un link che potrebbe fare al caso tuo.

    http://en.wikipedia.org/wiki/Moore_neighborhood

    mercoledì 7 maggio 2014 13:31
  • Ciao, grazie intanto

    Mi risulta però molto difficile definirlo in VB.NET, tu avresti un idea di come farlo?

    Ho creato qualcosa del tipo:

        Private Sub analizza(ByVal f As System.Drawing.Graphics)
            Dim Xcount As Integer = 0
            Dim Ycount As Integer = 0
            Dim btm As Bitmap = pb.Image
            Dim xregmin As Integer = 0
            Dim xregmax As Integer = 0
            Dim yregmax As Integer = 0
            Dim yregmin As Integer = 0
            For Xcount = 0 To btm.Width - 1
                For Ycount = 0 To btm.Height - 1
                    Select Case btm.GetPixel(Xcount, Ycount).GetBrightness
                        Case Color.Black.GetBrightness
                            If xregmin = 0 Then
                                If Xcount > xregmin Then
                                    xregmin = Xcount
                                End If
                            ElseIf Xcount > xregmax Then
                                xregmax = Xcount
                            ElseIf yregmin = 0 Then
                                If Ycount > yregmin Then
                                    yregmin = Ycount
                                End If
                            ElseIf Ycount > yregmax Then
                                yregmax = Ycount
                            End If
                    End Select
                Next
            Next
            f.DrawEllipse(Pens.Red, xregmin, yregmin, xregmax - xregmin, yregmax - yregmin)
        End Sub

    Mentre attendo la tua risposta vedo di riguardare il tuo link

    mercoledì 7 maggio 2014 14:04
  • usare un ovalshape?

    importi

    Imports Microsoft.VisualBasic.PowerPacks

     e scegli il controllo ovalshape

    e una possibilità

    ciao

    intendevo per cerchiarlo una volta identificato il colore

    come da foto

    • Modificato eugenio venerdì 9 maggio 2014 11:13
    giovedì 8 maggio 2014 20:10
  • Si era proprio così!

    Come dovrei fare??

    L'immagine a cui dovrei applicare l'operazione è una di questo tipo dove mi si deve cerchiare i corpi in nero:

    ...

    venerdì 9 maggio 2014 12:26
  • vediamo... :(

      è il controllo che deve intercettare il colore

    ma vuoi farlo al passaggio del mouse oppure su load della form?



    • Modificato eugenio venerdì 9 maggio 2014 13:46
    venerdì 9 maggio 2014 13:45
  • Vorrei che quando cliccassi un bottone lui mi cerchiasse le aree in nero (che sono stelle o nebulose).

    Grazie per la pazienza

    venerdì 9 maggio 2014 13:59
  • Vorrei che quando cliccassi un bottone lui mi cerchiasse le aree in nero (che sono stelle o nebulose).

    Grazie per la pazienza

    non sono cosi bravo, elaborare o fare una scansione dell immagine per il momento non ne sono capace

    prova qui http://freeimage.sourceforge.net/sourcecode.html

    posso fare un autoclick

    oppure come da foto sopra,

    con l evento click della picturebox clicco su una parte dell immagine

    e creo un ovalshape ...

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim canvas As New ShapeContainer ' To draw an oval, change the following line to ' Dim theShape As New OvalShape Dim theShape As New OvalShape ' Set the form as the parent of the ShapeContainer. canvas.Parent = me ' Set the ShapeContainer as the parent of the Shape. theShape.Parent = canvas ' Set the size of the shape. theShape.Size = New System.Drawing.Size(30, 30) theShape.BorderColor = Color.Red PictureBox1.SendToBack() ' Set the location of the shape. theShape.Location = New System.Drawing.Point(MousePosition.X, MousePosition.Y) ' To draw a rounded rectangle, add the following code: End Sub

    ...
    ...



    • Modificato eugenio sabato 10 maggio 2014 19:51
    sabato 10 maggio 2014 19:50
  • Grazie
    domenica 11 maggio 2014 08:34
  • Grazie

    prego.

    la soluzione è lontana però guarda se usi un

    TableLayoutPanel1

    forse impostando la griglia in modo che bloccando alcuni pixel e sbloccando altri

    si puo creare ovalshape solo su colore desiderato

    Imports Microsoft.VisualBasic.PowerPacks
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For i As Integer = 1 To 56
                Dim picturebox1 As New PictureBox
                Dim shapecontainer1 As New ShapeContainer
                Dim ovalshape1 As New OvalShape
                shapecontainer1.Parent = picturebox1
                ovalshape1.Parent = shapecontainer1
                ovalshape1.Size = New System.Drawing.Size(30, 30)
                ovalshape1.BorderColor = Color.Red
                Me.TableLayoutPanel1.Controls.Add(picturebox1)
            Next
        End Sub
    End Class


    giovedì 15 maggio 2014 19:44
  • Grazie eugnioteo ;)
    sabato 17 maggio 2014 11:56