So vergleichen Sie Skalare in OpenCV
-
13-12-2019 - |
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.
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.