2013-07-19 6 views
3

la façon dont nous convertir le type d'image de CV_8UC1 à CV_32FC1 dans OpenCV avec l'API C++ estCV_8UC1 à la conversion CV_32FC1 dans OpenCV

 r1.convertTo(r1, CV_32FC1, 1.0/255.0); 

r1 est la matrice déclarée comme cv::Mat. Quelqu'un peut-il me dire comment convertir de CV_8UC1 en CV_32FC1 tapez dans OpenCV avec C API? Si r2 est une matrice décrite comme CvMat* r2.

Répondre

5

cvConvertScale() pouvez faire ce que vous voulez.

En supposant que vous avez un cvMat * r1 de type 8UC1 et un cvMat * r2 de type 32FC1 et de la même taille puis

cvConvertScale(r1, r2, 1.0/255.0, 0.0); 

Étant donné que le type de destination est tiré de r2, il ne peut pas être le même cvMat comme r1.

+0

Crashes dans mon code. La documentation dit, c'est l'ancienne fonction C pour convertir les types CvArr: ** C: void cvConvertScale (const CvArr * src, CvArr * dst, double échelle = 1, double décalage = 0) **. Est-ce approprié aussi pour cv :: Mat? –

+1

Non, 'cvConvertScale()' n'est pas approprié pour un cv :: Mat. La question dit réellement quoi faire pour un cv :: Mat. – Bull

+0

à droite! Désolé, j'ai raté la dernière ligne. –