Gegeben opencv::Mat m1,m2
, ich möchte überprüfen, ob m1[i][j]
und m2[i][j]
gleich sind.Unterschied zwischen at() und row(). Col()
Ich habe gesehen, dass es zwei Möglichkeiten, dies zu tun:
if(m1.row(i).col(j) == m2.row(i).col(j))
und:
if(m1.at<float>(i,j)==m2.at<float>(i,j))
Beachten Sie, dass beide m1
und m2
Matrix SIFT-Deskriptoren sind (so ist float
der Elementtyp).
Meine Frage ist: Was ist der Unterschied zwischen den beiden Zugriffsmethoden?
Aber die erste Lösung hat den Vorteil, dass wir den Typ "Mat" zur Kompilierzeit nicht kennen müssen. Ist das korrekt? – justHelloWorld
@justHelloWorld Das ist richtig, der zu vergleichende Objekttyp ist 'Mat', so dass Sie ihn zur Kompilierzeit nicht explizit angeben müssen. – dasblinkenlight