2013-10-08 13 views
12

Was sind die Unterschiede zwischen OpenCV cv::Mat Typen?Unterschied der OpenCV Mat Typen

Um genauer zu sein, was ist der Unterschied zwischen CV_64F und CV_64FC1 oder CV_64FC2? Welchen sollte ich verwenden, wenn ich ein cv::Mat Objekt erstelle, das double Werte haben wird?

Antwort

19

Cx Teil zeigt Anzahl der Kanäle in einem Bild. Das heißt, Bild vom Typ CV_64FC1 einfaches Graustufenbild ist, und hat nur 1 Kanal:

image[i, j] = 0.5 

während Bilder vom Typ CV_64F3 wird mit 3 Kanälen farbiges Bild:

image[i, j] = (0.5, 0.3, 0.7) 

(in C++ kann man überprüfen, einzelne Pixel wie image.at<double>(i, j))

CV_64F ist das gleiche wie CV_64FC1. Also, wenn Sie nur 2D-Matrix müssen (das heißt einzelne kanalisierten) können Sie nur verwenden CV_64F


EDIT

Allgemeiner Typ Name eines Mat Objekt besteht aus mehreren Teilen. Hier ist beispielsweise für CV_64FC1:

  • CV_ - dies ist nur ein Präfix
  • 64 - Anzahl der Bits pro Basismatrixelement (zB Pixelwert in Graustufenbild oder Einzelfarbelement in BGR-Bild)
  • F - Art des Basiselements. In diesem Fall ist es F für Schwimmer, sondern auch S sein kann (signiert) oder U (unsigned)
  • Cx - Anzahl der Kanäle in einem Bild wie ich bereits dargelegt