Seite 1 von 1

no match for 'operator=' in . . .

Verfasst: 23. April 2012 20:19
von Boris_partys
Hallo

Ich habe eine Klasse Namens ContentFinder, mit der Methode (Funktion) colorReduce.
Nach dem erstellen eines Objektes (Contentfinder h) möchte ich die Methode jetzt anwenden, und zwar mit:

color=h.colorReduce(color, 32);

Beim Kompilieren bekomme ich jetzt jedoch folgende Fehlermeldung:

no match for 'operator=' in 'color = h.ContentFinder::colorReduce(((cv::Mat&)(& color)),32)'
candidates are: cv::Mat& cv::Mat::operator=(const cv::Mat&)
etc.

Kann mir jemand mit diesen erklärenden Worten helfen?? Oder braucht es da noch mehr an Infos, um mir zu helfen!?
Mal wieder vielen Dank.....

Boris

Re: no match for 'operator=' in . . .

Verfasst: 23. April 2012 20:42
von franzf
komplette Deklaration (nicht Definition) von ContentFinder::colorReduce() bitte.

//edit
Und welchen Typ hat "color"? Und bitte die gesamte Fehlermeldung posten, nicht nur diese zwei Zeilen.

Re: no match for 'operator=' in . . .

Verfasst: 24. April 2012 20:18
von Boris_partys
Hallo franzf

Wie man unschwer ersehen kann, arbeite ich mit OpenCV.
Hier die Definition.

Code: Alles auswählen

void colorReduce(cv::Mat &image, int div=64) {

              int nl= image.rows; // number of lines
              int nc= image.cols * image.channels(); // total number of elements per line

          for (int j=0; j<nl; j++) {

                      uchar* data= image.ptr<uchar>(j);

              for (int i=0; i<nc; i++) {

                // process each pixel ---------------------

                      data[i]= data[i]/div*div + div/2;

                // end of pixel processing ----------------

                } // end of line
          }
    }
Die Fehlermeldung verläuft so weiter: (Ich möchte das alles von oben nicht nochmal abschreiben müssen, Danke)

......
note: cv::Mat& cv::Mat::operator=(const cv::MatExpr&)
note: cv::Mat& cv::Mat::operator=(const cv::Scalar&)

Das wars:_)

Viele Grüße

Boris

Re: no match for 'operator=' in . . .

Verfasst: 24. April 2012 20:23
von Christian81
Und wie soll der Compiler der Variable color etwas zuweisen wenn deine colorReduce() - Funktion void zurückliefert?

Re: no match for 'operator=' in . . .

Verfasst: 24. April 2012 22:04
von franzf
Und was steht dann ganz am Ende? So was in der Art:

Code: Alles auswählen

Anmerkung:   keine bekannte Umwandlung für Argument 1 von »void« nach »const cv::Mat&«
Auch wenn es manchmal fade ist, die kompletten Fehlerausgaben zu lesen, es wird sich immer lohnen.