Как сделать переменные в цикле более динамичными? - PullRequest
0 голосов
/ 14 декабря 2018

Можно ли сделать анализ изображения более динамичным, чтобы он увеличивался и уменьшался в зависимости от размера ящика с картинками?Тогда я мог бы добавить любое изображение лабиринта из Интернета, и это сработало бы сразу.Я пытался использовать ReDim для некоторых переменных: ReDim пикселей (PictureBox1.Width, PictureBox1.Height) ReDim пикселовData (PictureBox1.Width, PictureBox1.Height) И изменение числовых значений внутри цикла, но, кажется, постоянно сбой.

Изображение, которое я использую: https://ibb.co/XVYBy1h

Код:

  Dim FILE_NAME As String = "U:\Visual Studio 2015\Projects\Trace Test\Trace Test\bin\Debug\data.txt"
        Dim objWriter As New System.IO.StreamWriter(FILE_NAME)



        Do Until widthIMG = myBitmap.Width

            lengthIMG += 1

            pixels(widthIMG, lengthIMG) = myBitmap.GetPixel(widthIMG, lengthIMG)
            Select Case pixels(widthIMG, lengthIMG).ToString
                Case "Color [A=255, R=0, G=0, B=0]"

                    objWriter.Write(" Width: " & widthIMG.ToString & " Length: " & lengthIMG.ToString & " Color: " & "Black " & vbCrLf)

                    pixelsData(widthIMG, lengthIMG) = "Black"
                Case "Color [A=255, R=255, G=255, B=255]"

                    objWriter.Write(" Width: " & widthIMG.ToString & " Length: " & lengthIMG.ToString & " Color: " & "White " & vbCrLf)

                    pixelsData(widthIMG, lengthIMG) = "White"
            End Select


            If lengthIMG = 342 Then
                lengthIMG = 1

                widthIMG += 1

            End If

            Continue Do

        Loop


        objWriter.Close()

1 Ответ

0 голосов
/ 14 декабря 2018

Обычным способом итерации по пикселям изображения будет использование двух циклов, например:

For y = 0 To myBitmap.Height - 1
    For x = 0 To myBitmap.Width - 1
        ' do something with myBitmap.GetPixel(x, y)
    Next
Next
...