转换uchar Mat在OpenCV中浮动Mat?

sma*_*ato 30 c++ opencv

在OpenCV中,如果我有一个包含uchar数据的Mat img,我该如何将数据转换为float?有功能吗?谢谢.

X''*_*X'' 53

如果你的意思是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)
Run Code Online (Sandbox Code Playgroud)

opencv2refman.pdf中的详细信息.

更新:

CV_32FC1用于1通道(C1,即灰度图像)浮点值(32F)像素

CV_8UC1用于1通道(C1,即灰色图像)无符号字符(8UC)值1.

更新2:
据Arthur Tacca说,只有CV_32F正确(或者可能是CV_8U),因为convertTo不应该改变频道数量.这听起来合乎逻辑吗?然而,当我检查opencv参考手册时,我找不到任何关于此的信息,但我同意他的看法.


And*_*oev 9

使用cvConvert功能.在Python中:

import cv
m = cv.CreateMat(2, 2, cv.CV_8UC1)
m1 = cv.CreateMat(2, 2, cv.CV_32FC1)
cv.Convert(m, m1)
Run Code Online (Sandbox Code Playgroud)