opencv怎么将图像数据存入矩阵

如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序... 如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序运行后在动态数组这报错,查了下,好像是野指针什么的原因,不知道该怎么解决。
于是我考虑用opencv里的Mat,现在的问题是,读取的图片是unit8的,但我后续的需要将其以float或double来计算,否则结果肯定会溢出。请问有什么类似matlab里im2double的方法么?
或者还有什么更好的办法得到图片相应的像素值矩阵?
展开
 我来答
素甘淡泊心常泰
推荐于2017-11-25 · TA获得超过514个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:73.6万
展开全部
我也不是很熟,但是Mat存图像也用过,试着说一下我的理解:
一般的图像文件格式使用的是 Unsigned 8bits吧,CvMat矩阵对应的参数类型就是
CV_8UC1,CV_8UC2,CV_8UC3。
(最后的1、2、3表示通道数,譬如RGB3通道就用CV_8UC3)

而float 是32位的,对应CvMat数据结构参数就是:CV_32FC1,CV_32FC2,CV_32FC3...
double是64bits,对应CvMat数据结构参数:CV_64FC1,CV_64FC2,CV_64FC3等。

变换这种矩阵单位类型,Mat里有一个函数convertTo可以办到:
C++:void Mat::convertTo(OutputArray m, int rtype, double alpha=1, double beta=0 )
rtype 参数就是上述单位类型。具体可以查相关的文档。

手打,希望可以帮到你。
88447821
2012-12-03 · TA获得超过1503个赞
知道小有建树答主
回答量:729
采纳率:100%
帮助的人:295万
展开全部
使用Mat类的convertTo就可以了啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式