Frage

Ich habe eine Klasse namens „myClass“, die den Typ „cv::Scalar“ zurückgibt, und ich möchte Folgendes tun:

cv::Scalar myValue; 
for ( myValue > myClass (i,j) )
.... 

Der Vergleichsteil in der „for“-Zeile gibt jedoch die Fehlermeldung „Kein Operator > entspricht diesen Operanden“ aus.Könnte mir jemand helfen?Danke schön.

War es hilfreich?

Lösung

Wenn es keinen Operator gibt, um zwei zu vergleichen cv::Scalar Elemente, die Sie definieren können:

#include "OpenCVStuff.h"

// Custom operator to compare cv::Scalar class...
bool operator >(const cv::Scalar &a, const cv::Scalar &b)
{
    bool Result = false;
    // Do whatever you think a Scalar comparison must be.
    return Result;
}

int main(int argc, char **argv)
{
    cv::Scalar myValue; 

    // Assuming myClass (i,j) returns a cv::Scalar
    for ( myValue > myClass (i,j) )
    {
        // Do something...
    }

    return 0;
}

Auf diese Weise können Sie den Weg zwei definieren cv::Scalar werden verglichen, ohne die zu stören cv::Scalar Klasse selbst.

Ich habe es in die gesteckt main.cpp Nur als Beispiel, aber Sie können den Operator an einer beliebigen Stelle definieren, solange er dort sichtbar ist, wo der Vergleich durchgeführt wird.

Andere Tipps

Um die Antwort von Zhi LU abzuschließen:

Wenn Sie ein Element des Skalars vergleichen möchten, sollten Sie als Nächstes tun:

generasacodicetagpre.

Jedenfalls gibt es keinen Punkt, wenn Sie nur einen einzelnen Wert wünschen.Und beachten Sie auch, dass Sie einen ordnungsgemäßen Schleifenausdruck wie

benötigen generasacodicetagpre.

scalar ist ein Vier-Doppel-Element-Element-Array.Sie können entweder jede Anzahl von Elementen (doppelter Typ) in einer solchen Struktur speichern.So können Sie also keine Kleinbucheinrichtung mit einem anderen direkt wie dem von int-Typ vergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top