data est un attribut publique de depthMat, qui contient l'adresse désignant l'emplacement mémoire des données d'une matrice cv::Mat. Une affectation modifie cet attribut en remplaçant son contenu par celui de depth, qui est aussi celui de _depth. Les casts ligne 2 et 3 semblent être des tentatives maladroites de faire coïncider les types de pointeur de depth et data (sans quoi le compilo râle).
A première vue, il s'agit là d'un code de gougnafier qui va provoquer des fuites mémoire (que devient la valeur originale de .data ? Elle est perdue, donc son contenu ne sera pas désalloué).
Un strict équivalent, la fuite mémoire en moins :
depthMat = cv::Mat(640, 480, CV_16UC1, _depth);
Cf la doc pour voir que les données désignées par _depth ne seront dupliquées ni par l'appel du constructeur, ni par l'affectation sur depthMat.
PS: Ce serait bien de préciser « j'utilise OpenCV X.Y.Z » dans ton message ; tout le monde n'est pas censé deviner d'où provient le type cv::Mat.
Partager