<?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[Parameter nicht im Gültigkeitsbereich]]></title><description><![CDATA[<p>Hallo,<br />
versuche via OpenCV eine Kameradetektierung inkl. Client-Server Anwendung.<br />
Das Programm steht soweit, nur hatte ich jetzt versucht meine Cam zu starten.</p>
<pre><code>class Cam
{
      //start WebCam
      int startCam(int WebCam)
      {
      CvCapture* capture =0;
      capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            cout &lt;&lt; &quot;Error: capture is NULL!&quot; &lt;&lt; endl;
            return -1;
        }
      }
};
</code></pre>
<pre><code>using namespace std;

Position getCoordinates(CvScalar lower, CvScalar upper)
{  
    Cam control;
    Cam startCam(int);
    IplImage* frame=0;
    //frame = cvLoadImage(&quot;/home/ubuntu/Bilder/Baelle.jpeg&quot;);
    frame = cvQueryFrame(capture);
    if(!frame)
    //return -1;

    cout &lt;&lt; &quot;Error&quot; &lt;&lt; endl;
    control.imgTracking=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U, 3);   //create a blank image and assigned to 'imgTracking' which has the same size of original video
    cvZero(control.imgTracking);...
</code></pre>
<p>Mein Problem ist nun, dass capture nicht im Gültigkeitsbereich definiert ist. bin noch recht am Anfang meiner Programmierkenntnisse. Ich übergebe in meiner Funktion startCam den Wert von capture oder?und diesen möchte ich dann benutzen um meine Kameradetektion zu starten.<br />
Freue mich über Hilfe! PS 2. Code ist nur ein Ausschnitt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319872/parameter-nicht-im-gültigkeitsbereich</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 17:24:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319872.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Sep 2013 09:55:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 09:55:14 GMT]]></title><description><![CDATA[<p>Hallo,<br />
versuche via OpenCV eine Kameradetektierung inkl. Client-Server Anwendung.<br />
Das Programm steht soweit, nur hatte ich jetzt versucht meine Cam zu starten.</p>
<pre><code>class Cam
{
      //start WebCam
      int startCam(int WebCam)
      {
      CvCapture* capture =0;
      capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            cout &lt;&lt; &quot;Error: capture is NULL!&quot; &lt;&lt; endl;
            return -1;
        }
      }
};
</code></pre>
<pre><code>using namespace std;

Position getCoordinates(CvScalar lower, CvScalar upper)
{  
    Cam control;
    Cam startCam(int);
    IplImage* frame=0;
    //frame = cvLoadImage(&quot;/home/ubuntu/Bilder/Baelle.jpeg&quot;);
    frame = cvQueryFrame(capture);
    if(!frame)
    //return -1;

    cout &lt;&lt; &quot;Error&quot; &lt;&lt; endl;
    control.imgTracking=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U, 3);   //create a blank image and assigned to 'imgTracking' which has the same size of original video
    cvZero(control.imgTracking);...
</code></pre>
<p>Mein Problem ist nun, dass capture nicht im Gültigkeitsbereich definiert ist. bin noch recht am Anfang meiner Programmierkenntnisse. Ich übergebe in meiner Funktion startCam den Wert von capture oder?und diesen möchte ich dann benutzen um meine Kameradetektion zu starten.<br />
Freue mich über Hilfe! PS 2. Code ist nur ein Ausschnitt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350702</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Fri, 06 Sep 2013 09:55:14 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 10:17:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">CvCapture* capture = 0;
</code></pre>
<p>Hiermit legst du in 'startCam' eine neue lokale Variable an (auf die du dann aber von außen keinen Zugriff hast).</p>
<p>Und diese Klassenfunktion mußt du dann auch richtig aufrufen:</p>
<pre><code class="language-cpp">Cam control;

int webCam = 0; // or whatever
control.startCam(webCam);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2350704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350704</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 06 Sep 2013 10:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 10:08:00 GMT]]></title><description><![CDATA[<p>Ingenieurin schrieb:</p>
<blockquote>
<p>Mein Problem ist nun, dass capture nicht im Gültigkeitsbereich definiert ist.</p>
</blockquote>
<p>Das ist vielleicht ein Fehler, den der Compiler dir ausgibt, aber das ist nicht dein Problem im eigentlichen Sinne. Dein Problem ist, dass das Programm überhaupt keinen Sinn ergibt. Zumindest keinen, den ich erkennen kann. Somit ist es auch nicht möglich, das zu reparieren.</p>
<p>Es sieht außerdem so aus, als würdest du zuviele Schritte auf einmal gehen wollen. Wenn du noch nichtmal mit Variablen, Funktionen und Gültigkeitsbereichen vertraut bist, solltest du erstmal keine Klassen schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350705</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 06 Sep 2013 10:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 10:12:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Cam startCam(int);
</code></pre>
<p>Das ist kein Methodenaufruf, das ist eine Deklaration. Du musst einen int übergeben, entweder direkt oder als Variable.</p>
<p>Soll &quot;capture&quot; eine Membervariable von &quot;Cam&quot; sein? Wenn nicht, dann könntest du den von &quot;cvCaptureFromCAM&quot; erstellten Pointer (btw. muss der Pointer eigentlich manuell gelöscht werden?) von der Methode zurückgeben lassen. Im Fehlerfall wirfst du dann eine Exception, anstelle den Rückgabewert zum Transport des Fehlercodes zu missbrauchen.</p>
<p>Ich weiß nicht genau, was &quot;CvScalar&quot; für ein Typ ist, ber vermutlich ist es besser, den als (const) Referenz zu übergeben:</p>
<pre><code class="language-cpp">Position getCoordinates(const CvScalar&amp; lower, const CvScalar&amp; upper)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2350706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350706</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 06 Sep 2013 10:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 11:41:51 GMT]]></title><description><![CDATA[<p>Die Klasse Cam macht so keinen Sinn. Du definierst darin überhaupt keine Datenelemente, in denen du dir irgend einen Zustand merken könntest. Die Variable namens <code>capture</code> definierst du nur funktionslokal in der startCam-funktion. Wenn die Ausführung mit der Funktion fertig ist, verschwindet diese Variable wieder und das erzeugt dann ein Resourcen-Leck.</p>
<pre><code class="language-cpp">Cam control;
Cam startCam(int);
</code></pre>
<p>macht auch sicher nicht das, was Du willst. Du definierst hier ein <code>Cam</code> -Objekt namens <code>control</code> , <em>rufst</em> dann aber nicht die startCam-Funktion auf, sondern <em>deklarierst</em> hier nur eine Funktion, die ein int nimmt und ein Cam-Objekt zurück gibt. Der Funktions<em>aufruf</em> hätte so aussehen müssen:</p>
<pre><code class="language-cpp">int ergebnis = control.startCam(dieWebCam);
</code></pre>
<p>wobei <code>dieWebCam</code> dann irgendein <code>int</code> ist. Aber wie gesagt, so bringt das auch nichts, weil es <code>capture</code> nur innerhalb der startCam-Funktion gibt.</p>
<p>Du müsstest Dich bzgl. der C++ Basics mal schlauer machen. Ohne ein bisschen Grundwissen tappst du ja doch nur im Dunkeln. Helfenden macht das auch nur viel Arbeit, wenn sie Dir erst mal so viele Basics beibringen müssen. Da kannst du nicht drauf setzen, dass immer einer da ist, der Dir für lau Händchen hält.</p>
<p>Vorschlag:</p>
<pre><code class="language-cpp">// Das hier kommt in eine Header-Datei
class Cam
{
public:
    explicit Cam(int index);
    IplImage* queryFrame();
    ~Cam();
private:
    CvCapture* cvc;

    Cam(Cam const&amp;); // nicht kopierbar
    Cam&amp; operator=(Cam const&amp;); // nicht zuweisbar
};
</code></pre>
<pre><code class="language-cpp">// Das hier kommt in eine cpp-Datei
Cam::Cam(int index)
: cvc(cvCapture(index))
{
    if (!war_alles_in_ordnung(cvc))
        throw std::runtime_error(&quot;camera will nicht!&quot;);
}

IplImage* Cam::queryFrame()
{
    return cvQueryFrame(capture);
}

Cam::~Cam()
{
    cvReleaseCapture(&amp;cvc);
}
</code></pre>
<p>(ungetestet)<br />
oder so ähnlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350713</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 06 Sep 2013 11:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter nicht im Gültigkeitsbereich on Fri, 06 Sep 2013 12:24:12 GMT]]></title><description><![CDATA[<p>Die OpenCV API sieht ja schon gräßlich aus. Gibt's da keinen vernünftigen C++ Wrapper (so mit RAII und so) für? Diese ganzen cvReleaseXXX-Funktionen sind ja schon nicht mehr feierlich. Oder habe ich das nur übersehen?</p>
<p>Gut, ab C++11 könnte man für fast alles da auch std::unique_ptr verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350720</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 06 Sep 2013 12:24:12 GMT</pubDate></item></channel></rss>