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.
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.
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)