web-dev-qa-db-fra.com

Convertir uchar Mat en float Mat dans OpenCV?

Dans OpenCV, si j'ai une img Mat qui contient des données uchar, comment convertir les données en float? Y a-t-il une fonction disponible? Je vous remercie.

30
small_potato

Si vous vouliez dire c ++ alors vous avez

#include<opencv2/opencv.hpp>
using namespace cv;
Mat img;
img.create(2,2,CV_8UC1);
Mat img2;
img.convertTo(img2, CV_32FC1); // or CV_32F works (too)

détails dans opencv2refman.pdf.

MISE À JOUR:

CV_32FC1 est pour les pixels à flotteur (32F) à 1 canal (C1, c'est-à-dire image grise)

CV_8UC1 est pour ceux à 1 canal (C1, c'est-à-dire image grise) non valorisés (8UC).

MISE À JOUR 2:
Selon Arthur Tacca, seulement CV_32F est correct (ou vraisemblablement CV_8U), car convertTo ne devrait pas changer le nombre de canaux. Cela semble logique non? Néanmoins, lorsque j'ai vérifié le manuel de référence opencv, je n'ai trouvé aucune information à ce sujet, mais je suis d'accord avec lui.

51
Barnabas Szabolcs

Utilisez la fonction cvConvert. En Python:

import cv
m = cv.CreateMat(2, 2, cv.CV_8UC1)
m1 = cv.CreateMat(2, 2, cv.CV_32FC1)
cv.Convert(m, m1)
9
Andrey Sboev