Announcement

Collapse
No announcement yet.

Grafik auslesen, auszählen und ein Gitter it zahlen erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Grafik auslesen, auszählen und ein Gitter it zahlen erstellen

    Hallo Leute...
    Habe folgenden Problem, Anliegen.

    Mein Sohnemann ist von Grafiken zu malen (ähnlich wie malen nach Zahlen) so begeistert das ich langsam ne mehr weiss wie ich es machen soll.

    Nun hat er eine Seite gefunden, wo ihn die Grafiken besonders interessieren (diese jetzt für die erklärung aber zu groß wären (standard: 96*96Pixel)).

    Also habe ich mal ein kleines Bild genommen um mein anliegen zu erklären. (1Viereck=1Pixel)
    In diesem Bild sollen die Farben ausgelesen (gezählt) werden und in ein Gitter eingefügt werden. So wie hier:



    Könnte mir und meinem Sohn da bitte jemand helfen.

    Ich hab das bild schon mal in eine Picturebox anzeigen lassen, weiss aber nicht wie das einlesen und übertragen in solch ein Gitter geht. (bin eben noch laie)

    Lieben Dank im voraus.

    Nachtrag: das z.B. ist eine Grafik von meinem Sohn seiter Seite was er gerne auf die oben beschrebene Weise lösen möchte:
    Zuletzt editiert von Paffy; 18.04.2010, 20:12.

  • #2
    Hallo Paffy,

    nach einem kurzen Google Ausflug mit: +"vb.net" +pixel +auslesen

    Habe ich direkt beim ersten Treffer Code gefunden der Dir helfen sollte. Ich habe den mal geändert ohne das Ergebnis zu prüfen, sollte aber so funktionieren.

    [Highlight=vb.net]
    Dim b As Bitmap
    Dim MaxWidth As Integer
    Dim MaxHeight As Integer
    Dim Red As Integer
    Dim Green As Integer
    Dim Blue As Integer
    Dim p As New Color
    b = Image.FromFile("Bildnachwahl.jpg")
    MaxWidth = b.Width
    MaxHeight = b.Height
    For x As Integer = 1 To MaxWidth - 1
    For y As Integer = 1 To MaxHeight - 1
    p = b.GetPixel(x, y)
    Red = p.R
    Green = p.G
    Blue = p.B
    ' Hier folgt dann noch was auch immer Du noch mit den Daten machen willst
    Next
    Next[/Highlight]

    Du musst noch zählen wie oft die gleichen Werte hintereinander gekommen sind.
    Es gibt zwei Varianten:
    a) Du gehst die Schleife zwei Mal durch einmal x y dann y x
    b) Oder Du packst die ganzen Daten in ein Array und gehst dieses dann zwei Mal durch

    Keine Ahnung was schneller ist, die erste Variante würde mit Bildern beliebiger Größe funktionieren, bei der zweiten muss das Array natürlich immer so groß sein das auch alle Daten gespeichert werden können.

    Ich finde das Ganze bei einem Bild mit 30x30 schon sehr unübersichtlich, bei einem Bild mit 96x96 gibt das eine riesige Bildschirmausgabe, ich weiß nicht ob das dann noch praktikabel ist. Denn in der Theorie musst Du ja davon ausgehen das es eine Reihe (oder Spalte) mit 96 Einsern geben kann.

    Gruß Womble
    Zuletzt editiert von Womble; 22.04.2010, 09:34.

    Comment


    • #3
      Mich würde ja mal die Logik interessieren:

      Aus dem linken Kästchen ergibt sich für die erste Zeile horizontal 2 1 2 graue Kästchen

      Aus dem obigen Kästchen der ersten Reihe 1 graues und 3 braune Kästchen.

      Das stimmt mit den Raster überein. Woraus ergeben ich jetzt die Positionen in der Reihe/Spalte
      Christian

      Comment


      • #4
        Ganz einfach die Leerstellen müssen "gefunden" werden. Folgen z.B. mehrere gleiche Farben direkt aufeinander bedeuted dies dass zwischen diesen mind. eine Leerstelle liegt, es könnten aber auch mehr sein, aber durch die Angaben der anderen Leiste kann ja nicht jeder Punkt an eine wirklich beliebige Stelle, sondern der muss ja auch mit dem anderen Raster überein stimmen, dadurch ergeben sich für einige Punkte feste Positionen und die anderen können dann einigermaßen bequem außer herum gebaut werden.

        Am Beispiel oben eignet sich z.B. die schwarz sehr gut als Anfang. Oben die erste schwarze Zwei besagt das in dieser Spalte zwei scharze Pixel stehen müssen. Gleichzeigit besagen die schwarze Zwei und die Schwarze Eins links das in diesen Reihen eben schwarze Pixel auftauchen müssen. Dadurch stehen zwei der schwarzen Pixel schon mal fest. Der nächste schwarze Pixel ergibt sich durch die erste schwarze Eins oben, denn über diese bleibt für den noch offenen Pixel aus der Angabe links nur noch eine Position übrig. Der Rest geht dann analog.

        Wer so etwas mal lösen will. Es gibt bei Spielmit.com ein Spiel namens Picture Logic das genau nach diesem Verfahren zu lösen ist, aber die Erklärung evtl. besser zu verstehen. Die arbeiten zwar, zumindest in dem Level in dem ich bin nur mit schwarz und weiß, aber die Logik bleibt die gleiche.

        Ich glaube zum spielen bei Spielmit.com war ein Account erforderlich, aber ich habe seitdem nicht mehr Spam bekommen als sonst, aber Garantie gebe ich keine

        Gruß Womble

        Comment


        • #5
          Mit dem Stichwort Nonogramm sollten sich reichlich Infos im Netz finden lassen.

          Comment


          • #6
            Danke für die Info
            Christian

            Comment


            • #7
              Oh, sorry..

              Hatte mit keiner Antwort ehr gerechnet, danke für den Tipp, aber irgendwie klappt das net so richtg :-(
              Gut, bin auch seit einiger Zeit mit einem anderen Problem beschäftigt, was ich für die Schule brauche.
              Bin also aus der Sache gerade raus, muss mich da erst wieder einfinden... da ich noch Laie bin!
              (ich bin ein Mensch der sich Beispiele ansehen muss bevor er sie versteht.)

              MfG Paffy

              Comment

              Working...
              X