<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Graustufenbild -&amp;gt; Array]]></title><description><![CDATA[<p>Hallo,</p>
<p>für eine Heightmap muss ich die Grauwerte eines Bildes in ein Array bekommen.<br />
Dabei ist es total egal, welches Format und es muss auch nur auf Windows laufen.</p>
<p>Ich suche nach einer Methode, das so einfach wie möglich hinzubekommen.<br />
Also ich möchte keine Bildverarbeitungsbibliothek, da ich ja lediglich die Farbwerte auslesen<br />
will und eigentlich möchte ich auch keinen eigenen Filereader für das Format programmieren.</p>
<p>Ich weiß, es gibt unzählige Filereader für alle Formate, aber alles was ich bisher gefunden habe,<br />
sah nach einem ziemlichen Overkill aus.</p>
<p>Also: was ist die einfachste und leichtgewichtigste Art, ein Graustufenbild auszulesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245475/graustufenbild-gt-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 16:07:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245475.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jul 2009 16:13:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 16:13:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>für eine Heightmap muss ich die Grauwerte eines Bildes in ein Array bekommen.<br />
Dabei ist es total egal, welches Format und es muss auch nur auf Windows laufen.</p>
<p>Ich suche nach einer Methode, das so einfach wie möglich hinzubekommen.<br />
Also ich möchte keine Bildverarbeitungsbibliothek, da ich ja lediglich die Farbwerte auslesen<br />
will und eigentlich möchte ich auch keinen eigenen Filereader für das Format programmieren.</p>
<p>Ich weiß, es gibt unzählige Filereader für alle Formate, aber alles was ich bisher gefunden habe,<br />
sah nach einem ziemlichen Overkill aus.</p>
<p>Also: was ist die einfachste und leichtgewichtigste Art, ein Graustufenbild auszulesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742911</guid><dc:creator><![CDATA[Heightmap]]></dc:creator><pubDate>Tue, 14 Jul 2009 16:13:47 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 16:21:01 GMT]]></title><description><![CDATA[<p>a) selber einlesen<br />
b) Library benutzen<br />
c) Magie<br />
Du willst c) aber da kann ich nicht weiterhelfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742921</guid><dc:creator><![CDATA[Sarkast]]></dc:creator><pubDate>Tue, 14 Jul 2009 16:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 16:34:34 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>Also ich möchte keine Bildverarbeitungsbibliothek, da ich ja lediglich die Farbwerte auslesen<br />
will und eigentlich möchte ich auch keinen eigenen Filereader für das Format programmieren.</p>
</blockquote>
<p>Widerspricht sich das nicht ein wenig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742935</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 14 Jul 2009 16:34:34 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 16:43:21 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>Dabei ist es total egal, welches Format und es muss auch nur auf Windows laufen.</p>
</blockquote>
<p>Habe ich das richtig verstanden, dass ein beliebiges Texturformat geladen werden soll? Falls ja:<br />
Das Problem ist, dass du nicht einfach jedes Texturformat öffnen kannst und ohne weiteres die Pixeldaten auslesen kannst. Jedes Texturformat ist anders aufgebaut. Außerdem müsstest du, wenn du denn alle Formate unterstützen möchtest, für jeden Textur-Dekodierer einen Dekomprimierer schreiben. Du wirst bei manchen Formaten vielleicht Parallelen finden (Ich spreche da von Bitmap und beispielsweise PCX oder TGA).</p>
<p>Heightmap schrieb:</p>
<blockquote>
<p>Filereader für das Format programmieren.</p>
</blockquote>
<p>Und was bleiben da für Äquivalenzen übrig? Irgendwie müssen die Texturen ja dekodiert werden...</p>
<p>Heightmap schrieb:</p>
<blockquote>
<p>Ich weiß, es gibt unzählige Filereader für alle Formate, aber alles was ich bisher gefunden habe,<br />
sah nach einem ziemlichen Overkill aus.</p>
</blockquote>
<p>Overkill? Wenn das zu hoch für dich ist, bezweifle ich, dass du eine passende API-Implementierung hinbekommst...</p>
<p>Heightmap schrieb:</p>
<blockquote>
<p>Also: was ist die einfachste und leichtgewichtigste Art, ein Graustufenbild auszulesen?</p>
</blockquote>
<p>Naja, du könntest einen einfachen Algorithmus implementieren, der durch Angabe des maximalen und minimalsten Graustufenfarbwert einen Wert aus dem Pixelindex sucht und ihn in einem Extra-Index auflistet. Benötigt aber einige, wie würdest du sagen, &quot;skills&quot;.</p>
<p>EDIT:<br />
Warum sind die Anderen immer schneller? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742940</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 14 Jul 2009 16:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 16:51:34 GMT]]></title><description><![CDATA[<p>Erstmal danke für Eure Anworten. Mein erstes Posting war offensichtlich etwas unglücklich formuliert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Es soll nicht jedes beliebige Format gelesen werden können, sondern lediglich eines. Dabei ist es mir egal welches das ist, solange es sich leicht einlesen lässt.<br />
Es geht nur darum eine einzige Heightmap zu laden, daher möchte ich keine riesen Bibliotheken wie OpenCV oder ähnliches einbinden müssen. (Das meinte ich mit &quot;Overkill&quot;)</p>
<p>Ich dachte da z.B. an Windows Funktionen, für die man keine extra Library braucht. (LoadImage()?)<br />
Oder bei .raw Dateien soll das Einlesen ja auch sehr leicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742947</guid><dc:creator><![CDATA[Heightmap]]></dc:creator><pubDate>Tue, 14 Jul 2009 16:51:34 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:00:28 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>Es soll nicht jedes beliebige Format gelesen werden können, sondern lediglich eines. Dabei ist es mir egal welches das ist, solange es sich leicht einlesen lässt.</p>
</blockquote>
<p>Na dann hast du doch freie Wahl.</p>
<p>Heightmap schrieb:</p>
<blockquote>
<p>Ich dachte da z.B. an Windows Funktionen, für die man keine extra Library braucht. (LoadImage()?)</p>
</blockquote>
<p>Damit wärest du dann aber nicht mehr Platformunabhängig.</p>
<p>Neben RAW- und Bitmap-Texturformaten ist wohl, wie bereits gesagt, <a href="http://de.wikipedia.org/wiki/Targa_Image_File" rel="nofollow">TGA</a> ganz schön. Soweit ich das übersehe gibt es auch nur einen Fileheader, was das lesen ziemlich einfach gestaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742953</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:07:28 GMT]]></title><description><![CDATA[<p>Du kannst mit WinAPI-Funktionen relativ leicht BMP-Dateien öffnen und an die Bilddaten gelangen. Ich würde dir zwar schon lieber zu OpenCV raten (damit arbeite ich auch), aber ich kann deine Overkill-Bedenken verstehen. Ich kenne mich mit den WinAPI-Funktionen zwar nicht gut aus, habe in diesem Mega-Thread</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-241662-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-matze+getbitmapbits-and-start-is-20.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-241662-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-matze+getbitmapbits-and-start-is-20.html</a></p>
<p>aber für denjenigen mal schnell was zusammengebastelt. Du brauchst dir nur die main anzuschauen (der ganze Quatsch darüber ist nur zum Speichern).Bitmap öffnen, Bilddaten kopieren und dann mit y*breite+x drin rumwurschteln. Ist nur eine Möglichkeit, und sicher nicht die beste (ich arbeite halt eher mit OpenCV, wie gesagt, und kenne den ganzen Kram nicht so). Vielleicht ist es eine kleine Anregung.</p>
<p>EDIT: An dem Thread kann man auch schön sehen, wie geduldig ich sein kann, wenn ich will! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742961</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:09:26 GMT]]></title><description><![CDATA[<p>Naja, du kannst ja mal nach TGA Loader googlen. Es gibt fertige Klassen und das Iterieren ueber die Pixel wird recht einfach. Hier z.B. <a href="http://gpwiki.org/index.php/LoadTGACpp" rel="nofollow">http://gpwiki.org/index.php/LoadTGACpp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742967</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:09:26 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:25:37 GMT]]></title><description><![CDATA[<p>Danke für Eure Antworten! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>@ Kóyaánasqatsi: Plattformabhängigkeit ist für mich, wie gesagt, nicht wichtig.</p>
<p>@ _matze: Ah, danke! Bei mir meckert aber der Compiler bei:</p>
<pre><code class="language-cpp">Speicher=malloc(sizeInBytes);
</code></pre>
<p>(cannot convert from 'void *' to 'int *')<br />
Was kann ich da machen?</p>
<p>@ knivil: Werde ich mir mal anschauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742973</guid><dc:creator><![CDATA[Heightmap]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:33:33 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>@ _matze: Ah, danke! Bei mir meckert aber der Compiler bei:</p>
<pre><code class="language-cpp">Speicher=malloc(sizeInBytes);
</code></pre>
<p>(cannot convert from 'void *' to 'int *')<br />
Was kann ich da machen?</p>
</blockquote>
<p>Ach ja, war ein C-Programm...</p>
<p>Die Rückgabe von malloc nach int* casten oder statt malloc/free new/delete benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742980</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:33:33 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 17:36:31 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>@ Kóyaánasqatsi: Plattformabhängigkeit ist für mich, <strong>wie gesagt</strong>, nicht wichtig.</p>
</blockquote>
<p>Wo hast du es denn gesagt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742983</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 14 Jul 2009 17:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 18:09:11 GMT]]></title><description><![CDATA[<p>In meinem ersten Beitrag. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Heightmap schrieb:</p>
<blockquote>
<p>..Dabei ist es total egal, welches Format und es muss auch nur auf Windows laufen.<br />
..</p>
</blockquote>
<p>@ _matze: Ok, so klappt es. Nur durch &quot;getchar()&quot; hängt sich das Programm auf.<br />
Wenn ich es weglasse und mir die Pixelwerte ausgeben lasse bekomme ich Werte im Millionenbereich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742997</guid><dc:creator><![CDATA[Heightmap]]></dc:creator><pubDate>Tue, 14 Jul 2009 18:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 18:30:05 GMT]]></title><description><![CDATA[<p>Heightmap schrieb:</p>
<blockquote>
<p>Wenn ich es weglasse und mir die Pixelwerte ausgeben lasse bekomme ich Werte im Millionenbereich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Ein Pixel hat (in einem 32-Bit-Bild) eine Größe von 4 Bytes. Daher nehme ich da einen int-Pointer. Willst du an die einzelnen Kanäle (r,g,b,alpha), musst du mit bitwise and und bitshift arbeiten. Solche Werte sieht man sich auch besser hexadezimal an.</p>
<p>Beispiel:</p>
<p>Pixel x,y (nennen wir mal px) ist 0x00fe0a1e</p>
<p>Willst du nun an den roten Kanal (dritte Stelle, sag ich jetzt mal), machst du Folgendes:</p>
<p>unsigned char r=(px &amp; 0x00ff0000)&gt;&gt;16 (damit kriegst du 0x00fe0000 und verschiebst die Bits um 16 Stellen nach rechts, um 0xfe zu erhalten)</p>
<p>Wenn dir nicht klar sein sollte, was hier passiert, solltest du dir mal grundlegende Dinge bzgl. Operatoren usw. ansehen.</p>
<p>Du hast dir wahrscheinlich einfach den gesamten Pixel angesehen und als einen Wert interpretiert, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743005</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 14 Jul 2009 18:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to Graustufenbild -&amp;gt; Array on Tue, 14 Jul 2009 18:40:50 GMT]]></title><description><![CDATA[<p>Ah, alles klar! Klappt jetzt wunderbar.</p>
<p>Danke! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743013</guid><dc:creator><![CDATA[Heightmap]]></dc:creator><pubDate>Tue, 14 Jul 2009 18:40:50 GMT</pubDate></item></channel></rss>