<?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[Flackern in der WM_Paint]]></title><description><![CDATA[<p>Hallo,</p>
<p>hier ein Ausschnitt meines Codes:</p>
<pre><code class="language-cpp">COLORREF cr;

 for (pixel_erkennung_y=irand; pixel_erkennung_y &lt;120+irand; pixel_erkennung_y++)
  {
    for (pixel_erkennung_x=irand; pixel_erkennung_x &lt;160+irand; pixel_erkennung_x++)
	{
	cr = GetPixel(hdc, pixel_erkennung_x, pixel_erkennung_y);

	double red=GetRValue(cr);
    double green=GetGValue(cr);
    double blue=GetBValue(cr);

   if(red&gt;r_ref-((r_ref/100)*18) &amp;&amp; green&lt;g_ref+((g_ref/100)*18) &amp;&amp; blue&lt;b_ref+((b_ref/100)*18)){
   SetPixel(hdc, pixel_erkennung_x, pixel_erkennung_y, RGB(0,255,255) );}
    }
  }
}
</code></pre>
<p>Das gesamte Projekt sieht so aus, dass ich über VFW nen WebCam-Stream in ne Win32 Anwendung eingebunden habe und nun einen Farbwertbereich aus dem Bild erkennen und makieren lasse.</p>
<p>Das Problem besteht darin, dass der Rechner permanent 19.200 Pixel (160*120) überprüft und diese gegebenenfalls ja auch noch farbig Übermalt (wenn sie im Toleranzbereich sind)</p>
<p>Das Resultat ist,dass die Erkennung zwar wunderbar funktioniert, das Bild aber flackert.</p>
<p>- Aus meine Java Zeit hatte ich an Doppelpufferung gedacht allerdings noch nichts passendes für c++ gefunden.</p>
<p>- Außerdem kam mir die Idee Multithreading zu benutzen und dann 160 Threads jeweils eine Spalte überprüfen zu lassen, wobei ich dieses allerdings noch nicht realisieren konnte.</p>
<p>Könnte ich mein Problem mit einem dieser Wege lösen bzw. habt ihr andere Ansätze für mich ???</p>
<p>Sollte einer der Wege gehen dann beschreibt mir doch bitte etwas wie ich genauer vorgehen muss.</p>
<p>Danke<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/66445/flackern-in-der-wm_paint</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 01:47:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/66445.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Feb 2004 15:07:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sat, 28 Feb 2004 15:07:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hier ein Ausschnitt meines Codes:</p>
<pre><code class="language-cpp">COLORREF cr;

 for (pixel_erkennung_y=irand; pixel_erkennung_y &lt;120+irand; pixel_erkennung_y++)
  {
    for (pixel_erkennung_x=irand; pixel_erkennung_x &lt;160+irand; pixel_erkennung_x++)
	{
	cr = GetPixel(hdc, pixel_erkennung_x, pixel_erkennung_y);

	double red=GetRValue(cr);
    double green=GetGValue(cr);
    double blue=GetBValue(cr);

   if(red&gt;r_ref-((r_ref/100)*18) &amp;&amp; green&lt;g_ref+((g_ref/100)*18) &amp;&amp; blue&lt;b_ref+((b_ref/100)*18)){
   SetPixel(hdc, pixel_erkennung_x, pixel_erkennung_y, RGB(0,255,255) );}
    }
  }
}
</code></pre>
<p>Das gesamte Projekt sieht so aus, dass ich über VFW nen WebCam-Stream in ne Win32 Anwendung eingebunden habe und nun einen Farbwertbereich aus dem Bild erkennen und makieren lasse.</p>
<p>Das Problem besteht darin, dass der Rechner permanent 19.200 Pixel (160*120) überprüft und diese gegebenenfalls ja auch noch farbig Übermalt (wenn sie im Toleranzbereich sind)</p>
<p>Das Resultat ist,dass die Erkennung zwar wunderbar funktioniert, das Bild aber flackert.</p>
<p>- Aus meine Java Zeit hatte ich an Doppelpufferung gedacht allerdings noch nichts passendes für c++ gefunden.</p>
<p>- Außerdem kam mir die Idee Multithreading zu benutzen und dann 160 Threads jeweils eine Spalte überprüfen zu lassen, wobei ich dieses allerdings noch nicht realisieren konnte.</p>
<p>Könnte ich mein Problem mit einem dieser Wege lösen bzw. habt ihr andere Ansätze für mich ???</p>
<p>Sollte einer der Wege gehen dann beschreibt mir doch bitte etwas wie ich genauer vorgehen muss.</p>
<p>Danke<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/469648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469648</guid><dc:creator><![CDATA[Michael H.]]></dc:creator><pubDate>Sat, 28 Feb 2004 15:07:22 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sat, 28 Feb 2004 15:39:04 GMT]]></title><description><![CDATA[<p>Double-/Backbuffering verhindert schon das Flackern, aber dass bei deine Vorgehensweise die Geschwindigkeit ausreicht um Bereiche in Echtzeit zu maskieren bezweifle ich doch sehr stark <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/469670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469670</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 28 Feb 2004 15:39:04 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sat, 28 Feb 2004 15:48:02 GMT]]></title><description><![CDATA[<p>Könntest du vielleicht noch 2 - 3 Takte dazu sagen.<br />
Weshalb bzw. was würdest du anders machen?</p>
<p>Hast du nen TUT zum Backbuffering ???</p>
<p>Danke<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/469675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469675</guid><dc:creator><![CDATA[Michael H.]]></dc:creator><pubDate>Sat, 28 Feb 2004 15:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sat, 28 Feb 2004 16:31:13 GMT]]></title><description><![CDATA[<p>Ich würde denken, dass es (falls das bzgl. des wohl verwendeten Overlay-Modus überhaupt geht) mit GetDIBits schneller geht - aber sicher bin ich mir da auch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Zu Back-/Double-Buffering:<br />
- <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=14713" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=14713</a><br />
- <a href="http://www.klangwerker.de/php/show.php?path=developer/german&amp;doc=g_double_buf1&amp;update=1" rel="nofollow">http://www.klangwerker.de/php/show.php?path=developer/german&amp;doc=g_double_buf1&amp;update=1</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/469702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469702</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 28 Feb 2004 16:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sun, 29 Feb 2004 09:45:08 GMT]]></title><description><![CDATA[<p>flenders schrieb:</p>
<blockquote>
<p>Zu Back-/Double-Buffering:<br />
- <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=14713" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=14713</a><br />
- <a href="http://www.klangwerker.de/php/show.php?path=developer/german&amp;doc=g_double_buf1&amp;update=1" rel="nofollow">http://www.klangwerker.de/php/show.php?path=developer/german&amp;doc=g_double_buf1&amp;update=1</a></p>
</blockquote>
<p>Zum Beispiel von Klangwerker mal eine dumme Frage: Wie muss ich denn den Konstruktor und CopyBufferToDisplay im WM_PAINT aufrufen? Übergebe ich da ein Bitmap oder das Objekt (z.B. ein Rechteck) and die Prozedur? Hätte da jemand einen kleinen Code-Schnipsel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/469948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469948</guid><dc:creator><![CDATA[Nonsense]]></dc:creator><pubDate>Sun, 29 Feb 2004 09:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sun, 29 Feb 2004 10:41:24 GMT]]></title><description><![CDATA[<p>Du scheinst dich offenbar mit der WinAPI bisher noch gar nicht auszukennen - evtl. solltest du dir erst mal ein wenig die Grundlagen aneignen <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>
<blockquote>
<pre><code class="language-cpp">KGrafixBuffer(HINSTANCE hInstance, HWND hwnd);
</code></pre>
</blockquote>
<p>Da steht doch eigentlich drin, was du übergeben sollst - wobei ich das mit hInstance nicht verstehe, da es nachher gar nicht verwendet wird <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="😕"
    /><br />
Ein Objekt dieser Klasse erzeugst du entweder in WM_CREATE oder global, allerdings musst du auch Größenänderungen entsprechend abfangen (neu erzeugen), damit Buffer auch in der Größe der neuen Fenstergröße angepasst wird.</p>
<p>Und CopyBufferToDisplay übergibst du dann einfach dein Fenster-Handle. Wobei ich den ganzen Klassenaufbau nicht so ideal finde - aber zumindest die zu verwendenden Funktionen und die Reihenfolge, in der du diese Aufrufen musst siehst du dort ganz gut <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/469967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469967</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 29 Feb 2004 10:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sun, 29 Feb 2004 11:02:36 GMT]]></title><description><![CDATA[<p>flenders schrieb:</p>
<blockquote>
<p>Du scheinst dich offenbar mit der WinAPI bisher noch gar nicht auszukennen - evtl. solltest du dir erst mal ein wenig die Grundlagen aneignen <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>
</blockquote>
<p>Jupp, du bringst es auf den Punkt. Bin Umsteiger und habe deshalb noch so meine Probleme mit C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/469982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469982</guid><dc:creator><![CDATA[Nonsense]]></dc:creator><pubDate>Sun, 29 Feb 2004 11:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Flackern in der WM_Paint on Sun, 29 Feb 2004 11:14:34 GMT]]></title><description><![CDATA[<p><a href="http://www.win-api.de" rel="nofollow">http://www.win-api.de</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/469991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/469991</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 29 Feb 2004 11:14:34 GMT</pubDate></item></channel></rss>