Ich würde gerne wissen, ob es einen Unterschied zwischen den OpenCV-Typen CV_32F und CV_32FC1 gibt? Ich weiß bereits, dass 32F für einen "32-Bit-Gleitkomma" und C1 für "Einzel-Kanal" steht, aber weitere Erklärungen wären willkommen.
Wenn ja, wie unterscheiden sie sich / welche sollte ich in welchen Fällen verwenden? Wie Sie vielleicht wissen, können OpenCV-Typen sehr schwierig werden ...
Vielen Dank im Voraus für Ihre Hilfe!
Der Wert für CV_32F
und CV_32FC1
ist 5
(siehe unten), also gibt es keinen Unterschied.
Allerdings:
CV_32F
definiert die Tiefe jedes Elements der Matrix, während CV_32FC1
definiert sowohl die Tiefe jedes Elements als auch die Anzahl der Kanäle. Ein paar Beispiele ...
Viele Funktionen, z.B. Sobel oder convertTo , benötigen Sie die Zieltiefe (und nicht die Anzahl der Kanäle), also Sie tu:
%Vor%Wenn Sie jedoch beispielsweise eine Matrix erstellen, müssen Sie auch die Anzahl der Kanäle angeben:
%Vor% Grundsätzlich sollten Sie jedes Mal, wenn Sie die Anzahl der Kanäle angeben möchten, CV_32FCx
verwenden. Wenn Sie nur die Tiefe benötigen, verwenden Sie CV_32F
CV_32F
ist definiert als:
während CV_32FC1
wie folgt definiert ist:
was zu 5
auswertet.
Sie können dies überprüfen mit:
%Vor%Tags und Links c++ opencv computer-vision