在OpenCV中,如果我有一个包含uchar数据的Mat img,如何将数据转换为float?是否有可用的函数?谢谢。
如果你是指c ++,那么你有
#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)
详细信息请查看opencv2refman.pdf。
更新:
CV_32FC1是用于单通道(C1,即灰度图像)浮点值(32F)像素的。
CV_8UC1是用于单通道(C1,即灰度图像)无符号字符(8UC)值的。
更新2:
根据Arthur Tacca的说法,只有CV_32F
是正确的(或者假设是CV_8U),因为convertTo不应该改变通道数。这听起来很合理对吧?然而,当我查阅opencv参考手册时,我没有找到任何关于这个问题的信息,但我同意他的观点。
32F
和 8U
? - AHF使用cvConvert
函数。在Python中:
import cv
m = cv.CreateMat(2, 2, cv.CV_8UC1)
m1 = cv.CreateMat(2, 2, cv.CV_32FC1)
cv.Convert(m, m1)
img = img.astype(np.float32)
。 - Burak