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

如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序... 如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序运行后在动态数组这报错,查了下,好像是野指针什么的原因,不知道该怎么解决。
于是我考虑用opencv里的Mat,现在的问题是,读取的图片是unit8的,但我后续的需要将其以float或double来计算,否则结果肯定会溢出。请问有什么类似matlab里im2double的方法么?
或者还有什么更好的办法得到图片相应的像素值矩阵?
展开
 我来答
素甘淡泊心常泰
推荐于2017-11-25 · TA获得超过514个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:74.3万
展开全部
我也不是很熟,但是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 参数就是上述单位类型。具体可以查相关的文档。

手打,希望可以帮到你。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
88447821
2012-12-03 · TA获得超过1504个赞
知道小有建树答主
回答量:729
采纳率:100%
帮助的人:300万
展开全部
使用Mat类的convertTo就可以了啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式