no match for 'operator=' in . . .

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Boris_partys
Beiträge: 14
Registriert: 20. Februar 2012 06:22

no match for 'operator=' in . . .

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

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

Beitrag 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.
Boris_partys
Beiträge: 14
Registriert: 20. Februar 2012 06:22

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

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

Beitrag von Christian81 »

Und wie soll der Compiler der Variable color etwas zuweisen wenn deine colorReduce() - Funktion void zurückliefert?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

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

Beitrag 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.
Antworten