Warum sind opencms Mat :: rows und Mat :: cols statt unsigned signiert?

9

Ich kompiliere ein Programm mit dem -Wall -Flag von gcc. Ich mache einen Vergleich (mit einem unsigned int) an Mat::cols und Mat::rows an einem bestimmten Punkt und erhalte eine Warnung über den Vergleich von signierten und unsignierten Ints. Obwohl es keine große Sache ist, dies wegzuwerfen, bin ich neugierig, was die Begründung für eine Mat ist, die eine negative Größe hat.

Logischerweise kann eine Matrix nicht leerer sein als eine leere Matrix (mit 0 Zeilen und 0 Spalten). Was würde also eine Matrix mit -1 Zeilen oder -1 Spalten bedeuten?

Es scheint nicht viel Leistungsunterschied zwischen den Berechnungen für signierte und unsignierte Ints zu geben entweder.

    
Sveltely 14.03.2014, 02:46
quelle

1 Antwort

4

Ich denke, weil meistens int i als Schleifenzähler verwendet wird. Mit uint als Spalten und Zeilen werden viele Warnungen angezeigt. Auch größere Unterschiede in den Dimensionen wären etwas fehleranfälliger.

neben dem. In meinen Augen ist OpenCv kein gutes Beispiel für gutes Design. Es gibt Dutzende von Beispielen für schlechtes Klassen-Design. Auch das Design der generierten Dokumentation ist schrecklich (alle Überlastungen einer Funktion und ihrer Parameter sind zum Beispiel miteinander vermischt).

Aber es ist eine sehr umfassende und gute Bildverarbeitungsbibliothek. und das entschuldigt viel:)

    
vlad_tepesch 14.03.2014, 08:01
quelle

Tags und Links