<?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[Problem Initialisierung über Klasse]]></title><description><![CDATA[<p>Hallöchen!<br />
Ich schreibe derzeit ein Programm was via OpenCV Farben detektieren soll.<br />
Da ich Anfänger bin komm ich mit den ganzen Klassen und Funktionen noch nicht wirklich zurecht. Daher bitte ich euch um Rat.<br />
Mittels OpenCV lässt sich relativ einfach eine WebCam aktivieren. Diese will ich nun in mein Programm einbinden.<br />
Anbei ein Ausschnitt aus meinem Code:</p>
<pre><code>#ifndef CAM_H_INCLUDED
#define CAM_H_INCLUDED
#include &lt;cv.h&gt;
#include &lt;highgui.h&gt;
#include &quot;Position.h&quot;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
class Cam
{
    public:
        IplImage* imgTracking;
        IplImage* GetThresholdedImage(IplImage* imgHSV, CvScalar lower, CvScalar upper);    //This function threshold the HSV image and create a binary image
        Position getPosition(IplImage* imgThresh);  //to find the position

      //start WebCam
      CvCapture* capture =0;
      capture = cvCaptureFromCAM(0);
      int startCam(capture)
      {
      //CvCapture* capture =0;
      //capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            std::cout &lt;&lt; &quot;Capture failed&quot; &lt;&lt; std::endl;
            return -1;
        }
        IplImage* frame =0;
        frame = cvQueryFrame(capture);
        if(!frame) return -1;
      }
};
#endif // CAM_H_INCLUDED
</code></pre>
<p>Das wäre der Code aus dem Header Cam.h<br />
nun möchte ich im Hauptprogramm meine Camaktivierung benutzen</p>
<pre><code>#include &lt;cv.h&gt;
#include &lt;highgui.h&gt;
#include &quot;Position.h&quot;
#include &quot;Cam.h&quot;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;sstream&gt;
#include &lt;iostream&gt;

using namespace std;

Position getCoordinates(CvScalar lower, CvScalar upper)
{
    Cam control;
    startCam(frame);

    /*IplImage* frame=0;
    frame = cvLoadImage(&quot;/home/ubuntu/Bilder/Baelle.jpeg&quot;);
    if(!frame)
    return -1; für cam starten
    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);   //covert the image, 'imgTracking' to black
    frame = cvQueryFrame(capture);
    if(!frame) break;
    frame=cvCloneImage(frame);
    cvSmooth(frame, frame, CV_GAUSSIAN,3,3); //smooth the original image using Gaussian kernel
    IplImage* imgHSV = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
    cvCvtColor(frame, imgHSV, CV_BGR2HSV); //Change the color format from BGR to HSV
    IplImage* imgThresh = control.GetThresholdedImage(imgHSV, lower, upper);
    cvSmooth(imgThresh, imgThresh, CV_GAUSSIAN,3,3); //smooth the binary image using Gaussian kernel
    Position position = control.getPosition(imgThresh);   //track the possition of the Roboter
    cvAdd(frame, control.imgTracking, frame); // Add the tracking image and the frame

    cvReleaseImage(&amp;imgHSV); //Clean up used images
    cvReleaseImage(&amp;imgThresh);
    cvReleaseImage(&amp;frame);

    cvWaitKey(1);
    //cvDestroyAllWindows() ;
    return position;
}
</code></pre>
<p>Meine Fehlermeldung ist, diese, dass capture keinen Typ bezeichnet. Ich denke mal ich hab hier noch ein Problem bzgl meiner Klasse in ein Hauptprogramm oder so. Wäre echt klasse wenn mir jemand helfen könnte.<br />
Bei Bedarf schick ich auch gerne das gesamte Projekt. Ist halt nur etwas zu groß für ein Forum hier.</p>
<p>Danke!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319349/problem-initialisierung-über-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 22:46:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319349.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Aug 2013 07:22:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 07:22:47 GMT]]></title><description><![CDATA[<p>Hallöchen!<br />
Ich schreibe derzeit ein Programm was via OpenCV Farben detektieren soll.<br />
Da ich Anfänger bin komm ich mit den ganzen Klassen und Funktionen noch nicht wirklich zurecht. Daher bitte ich euch um Rat.<br />
Mittels OpenCV lässt sich relativ einfach eine WebCam aktivieren. Diese will ich nun in mein Programm einbinden.<br />
Anbei ein Ausschnitt aus meinem Code:</p>
<pre><code>#ifndef CAM_H_INCLUDED
#define CAM_H_INCLUDED
#include &lt;cv.h&gt;
#include &lt;highgui.h&gt;
#include &quot;Position.h&quot;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
class Cam
{
    public:
        IplImage* imgTracking;
        IplImage* GetThresholdedImage(IplImage* imgHSV, CvScalar lower, CvScalar upper);    //This function threshold the HSV image and create a binary image
        Position getPosition(IplImage* imgThresh);  //to find the position

      //start WebCam
      CvCapture* capture =0;
      capture = cvCaptureFromCAM(0);
      int startCam(capture)
      {
      //CvCapture* capture =0;
      //capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            std::cout &lt;&lt; &quot;Capture failed&quot; &lt;&lt; std::endl;
            return -1;
        }
        IplImage* frame =0;
        frame = cvQueryFrame(capture);
        if(!frame) return -1;
      }
};
#endif // CAM_H_INCLUDED
</code></pre>
<p>Das wäre der Code aus dem Header Cam.h<br />
nun möchte ich im Hauptprogramm meine Camaktivierung benutzen</p>
<pre><code>#include &lt;cv.h&gt;
#include &lt;highgui.h&gt;
#include &quot;Position.h&quot;
#include &quot;Cam.h&quot;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;sstream&gt;
#include &lt;iostream&gt;

using namespace std;

Position getCoordinates(CvScalar lower, CvScalar upper)
{
    Cam control;
    startCam(frame);

    /*IplImage* frame=0;
    frame = cvLoadImage(&quot;/home/ubuntu/Bilder/Baelle.jpeg&quot;);
    if(!frame)
    return -1; für cam starten
    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);   //covert the image, 'imgTracking' to black
    frame = cvQueryFrame(capture);
    if(!frame) break;
    frame=cvCloneImage(frame);
    cvSmooth(frame, frame, CV_GAUSSIAN,3,3); //smooth the original image using Gaussian kernel
    IplImage* imgHSV = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
    cvCvtColor(frame, imgHSV, CV_BGR2HSV); //Change the color format from BGR to HSV
    IplImage* imgThresh = control.GetThresholdedImage(imgHSV, lower, upper);
    cvSmooth(imgThresh, imgThresh, CV_GAUSSIAN,3,3); //smooth the binary image using Gaussian kernel
    Position position = control.getPosition(imgThresh);   //track the possition of the Roboter
    cvAdd(frame, control.imgTracking, frame); // Add the tracking image and the frame

    cvReleaseImage(&amp;imgHSV); //Clean up used images
    cvReleaseImage(&amp;imgThresh);
    cvReleaseImage(&amp;frame);

    cvWaitKey(1);
    //cvDestroyAllWindows() ;
    return position;
}
</code></pre>
<p>Meine Fehlermeldung ist, diese, dass capture keinen Typ bezeichnet. Ich denke mal ich hab hier noch ein Problem bzgl meiner Klasse in ein Hauptprogramm oder so. Wäre echt klasse wenn mir jemand helfen könnte.<br />
Bei Bedarf schick ich auch gerne das gesamte Projekt. Ist halt nur etwas zu groß für ein Forum hier.</p>
<p>Danke!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345982</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Thu, 15 Aug 2013 07:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 07:35:11 GMT]]></title><description><![CDATA[<p>Ja, du hast da einen Syntaxfehler:</p>
<pre><code>class Cam
{
    CvCapture* capture = 0; 
    capture = cvCaptureFromCAM(0);

    int startCam(capture) // Methode
    {
        // ...
    }
};
</code></pre>
<p>Du definierst eine Membervariable vom Typ CvCapture* mit Namen capture. Ok soweit, aber das = 0 gehört da nicht hinter. Das gehört in den Konstruktor.</p>
<p>Genauso gehört in den Konstruktor, dass du dem capture das Ergebnis des Funktiosnaufrufs cvCaptureFromCAM(0) zuweist. (Wieso eigentlich erst eine Nullzuweisung und danach was anderes? Wieso nicht direkt das &quot;andere&quot;?)</p>
<p>Dann definierst du dir eine Methode startCam mit Rückgabetyp int, ok soweit. Die Parameterdeklaration ist jedoch falsch. capture müsste eine Typ sein, damit die Syntax korrekt ist, ist es jedoch nicht wie wir 2 Zeilen vorher gesehen haben. Das dürfte der Fehler sein, den du meinst.</p>
<p>In deinem zweiten Codesnippet ist der zugehörige Aufruf von startCam übrigens auch falsch.</p>
<p>Du solltest ein halbwegs gutes Buch konsultieren und ja nicht glauben, dass das Mischen von C und C++ super toll und gut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345987</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 15 Aug 2013 07:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 07:36:49 GMT]]></title><description><![CDATA[<p>Wenn ich das richtig sehe, ist capture keine Variable der main o.ä., sondern der Klasse Cam.<br />
Du musst also via dein Cam Objekt darauf zugreifen.<br />
Übrigens benutzt du die meisten Header in der Cam.h gar nicht, die können weg.</p>
<p>Edit: Bezog mich auf Zeile 30 der main, hab das im Header gar nicht gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345988</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 15 Aug 2013 07:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 07:48:29 GMT]]></title><description><![CDATA[<p>Um ehrlich zu sein verstehe ich nur Bahnhof <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=":-/"
      alt="😕"
    /><br />
Ich hab zwar schon etwas über Konstruktor gelesen aber so wirklich verstanden hatte ich es nicht und dachte eigentlich ich komme auch ohne aus.</p>
<p>bzgl c und c++ mischen, ich hatte zu Anfang auch cout stehen aber da kam immer eine Fehlermeldung dass cout etc nicht im Gültigkeitsbereich definiert wurde Obwohl IOSTREAM included hatte.</p>
<p>um die Funktion startCam aufzurufen in meinem Programm, muss ich doch Cam::startCam() schreiben oder?</p>
<p>tja mehr weiß ich leider nicht. Aber danke für die Tips. Aber so richtig kann ich leider noch nichts damit anfangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> einfach zu wenig Kenntnis und zu wenig Zeit sich die noch anzueignen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345995</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Thu, 15 Aug 2013 07:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 08:12:59 GMT]]></title><description><![CDATA[<p>Ich hab mal versucht mich nochmal ein wenig quer zu lesen.<br />
Ist der Ansatz so richtig? bzw meintet ihr das so:</p>
<pre><code>#ifndef CAM_H_INCLUDED
#define CAM_H_INCLUDED
#include &lt;iostream&gt;
#include &lt;cv.h&gt;
#include &lt;highgui.h&gt;
#include &quot;Position.h&quot;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
class Cam
{
    public:
        IplImage* imgTracking;
        IplImage* GetThresholdedImage(IplImage* imgHSV, CvScalar lower, CvScalar upper);    //This function threshold the HSV image and create a binary image
        Position getPosition(IplImage* imgThresh);  //to find the position
        CvCapture* capture;

};

Cam::startCam(capture)
{
    capture = 0;
    capture = cvCaptureFromCAM(0);
    int startCam(capture)
    {
      //
      //capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            std::cout &lt;&lt; &quot;Capture failed&quot; &lt;&lt; std::endl;
            return -1;
        }
        IplImage* frame =0;
        frame = cvQueryFrame(capture);
        if(!frame) return -1;
    }
}

#endif // CAM_H_INCLUDED
</code></pre>
<p>bekomme aber noch eine Fehlermeldung bzgl des konstruktors / dekonstruktors.<br />
Freue mich über Hilfe <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="🙂"
    /><br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346002</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Thu, 15 Aug 2013 08:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 08:50:59 GMT]]></title><description><![CDATA[<p>Ingenieurin schrieb:</p>
<blockquote>
<p>Ich hab zwar schon etwas über Konstruktor gelesen aber so wirklich verstanden hatte ich es nicht und dachte eigentlich ich komme auch ohne aus.</p>
</blockquote>
<p>Nicht böse gemeint, aber wenn Du nicht weißt was ein Konstruktor ist, sind WebCams und OpenCV noch ein paar Nummern zu hoch für Dich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346008</guid><dc:creator><![CDATA[afdhcvxngfj]]></dc:creator><pubDate>Thu, 15 Aug 2013 08:50:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 08:52:11 GMT]]></title><description><![CDATA[<p>Tja, das interessiert aber niemanden am Lehrstuhl wo ich meine Masterarbeit schreibe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346009</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Thu, 15 Aug 2013 08:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 09:08:24 GMT]]></title><description><![CDATA[<pre><code>int startCam(capture)
      {
      //CvCapture* capture =0;
      //capture = cvCaptureFromCAM(0);
      if(!capture)
        {
            std::cout &lt;&lt; &quot;Capture failed&quot; &lt;&lt; std::endl;
            return -1;
        }
        IplImage* frame =0;
        frame = cvQueryFrame(capture);
        if(!frame) return -1;
      }
</code></pre>
<p>Dein Parameter hat keinen Typ: von welcher Klasse ist capture? Du musst schreiben:</p>
<pre><code>int startCam(CvCapture* capture)
</code></pre>
<p>Ein Konstruktor initialisiert einfach ein Objekt einer Klasse:<br />
Wird ein Objekt einer Klasse erzeugt wird immer zuerst der Konstruktor aufgerufen. Jede Klasse hat einen Konstruktor, wird keiner explizit definiert tut der einfach garnichts: Klassenname(){}<br />
Destruktor ist das Gegenstück wenn ein Objekt zerstört wird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346011</guid><dc:creator><![CDATA[Schoeniaw*koq*]]></dc:creator><pubDate>Thu, 15 Aug 2013 09:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 09:27:50 GMT]]></title><description><![CDATA[<p>Ingenieurin schrieb:</p>
<blockquote>
<p>Tja, das interessiert aber niemanden am Lehrstuhl wo ich meine Masterarbeit schreibe</p>
</blockquote>
<p>Dann zählt es zum umfang der Masterarbeit, dass du dich da reinliest.</p>
<p>Darf man fragen was du studierst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346017</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 15 Aug 2013 09:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 09:32:10 GMT]]></title><description><![CDATA[<p>ich studiere Elektro- und Informationstechnik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346019</guid><dc:creator><![CDATA[Ingenieurin]]></dc:creator><pubDate>Thu, 15 Aug 2013 09:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem Initialisierung über Klasse on Thu, 15 Aug 2013 09:32:29 GMT]]></title><description><![CDATA[<p>Ich bin kein OpenCV-Fachmann und kann deswegen nicht gut erraten, was das alles werden soll. Was C++ angeht, wird deutlich, dass Du viele Wissenslücken hast. Das sind Wissenslücken, die du mit Hilfe von schlauen Büchern füllen müsstest; denn bei deinen Wissenslücken reicht keine kurze Antwort. Man müsste viele Grundlagen erklären. Und warum sollte man das tun, wenn Grundlagen doch viel besser und ausführlicher in schlauen Büchern erklärt werden? Das kann nicht Sinn und Zweck eines Forums sein.</p>
<p>Deine Fehler:</p>
<ul>
<li>In der Klassendefinition taucht weder eine Deklaration eines Konstruktors noch der Funktion startCam auf. Das passt nicht zu Deiner Beschreibung, dass mit dem Konstruktor etwas nicht stimme. Es gibt ja gar keinen. Es passt auch nicht zu der startCam-Funktion, die Du darunter defnierst. Die hättest du in der Klasse deklarieren müssen.</li>
<li>Funktionsparameter haben Typen und (normalerweise) einen Namen. Bei deiner startCam-funktion steht in der Klammer für die Funktionsparameter nur &quot;capture&quot;. Was soll das sein?</li>
<li>Solche Funktionen wie startCam definiert man nicht in einer Header-Datei. Du musst unbedingt die One-Definition-Rule kennenlernen um das Konzept der getrennten Übersetzung zu verstehen.</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/2346020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346020</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 15 Aug 2013 09:32:29 GMT</pubDate></item></channel></rss>