opencv怎么将图像数据存入矩阵
如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序...
如题,之前我是将每幅图用cvGet2D得到的像素值依次赋值到数组里。因为事先不知道图片大小,所以用动态数组也就是new的方法。但这次可能是要处理的图片较大较多的原因,程序运行后在动态数组这报错,查了下,好像是野指针什么的原因,不知道该怎么解决。
于是我考虑用opencv里的Mat,现在的问题是,读取的图片是unit8的,但我后续的需要将其以float或double来计算,否则结果肯定会溢出。请问有什么类似matlab里im2double的方法么?
或者还有什么更好的办法得到图片相应的像素值矩阵? 展开
于是我考虑用opencv里的Mat,现在的问题是,读取的图片是unit8的,但我后续的需要将其以float或double来计算,否则结果肯定会溢出。请问有什么类似matlab里im2double的方法么?
或者还有什么更好的办法得到图片相应的像素值矩阵? 展开
2个回答
展开全部
我也不是很熟,但是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 参数就是上述单位类型。具体可以查相关的文档。
手打,希望可以帮到你。
一般的图像文件格式使用的是 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 参数就是上述单位类型。具体可以查相关的文档。
手打,希望可以帮到你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询