您的位置:首页 > 运维架构

opencv中Mat的数据类型设置问题

2014-07-14 14:22 281 查看
在编码过程中已经编好的代码,使用存放数据类型是Mat,觉得一直没有问题,但是出来的结果就是不对。

所以考虑改用vector或者CvMat类型。

考虑到要使用opencv中有关数据计算的函数,比如乘,求逆,转置等,最终选择用CvMat。

在使用CvMat中,要实现使用cvCreatMat函数,需要设置数据类型,设置为CV_32FC1。

这时意识到可能Mat中的数据类型设置有误。

于是乎,讲Mat变量的类型设置为CV_32FC1,使用float类型。

开始设置默认为图像的uchar类型,而数据范围为0~255,在矩阵计算过程中,肯定是要超出这个范围的,所以计算过程中就出现了错误。

以下是数据类型介绍:

Mat_<uchar>对应的是CV_8U,

Mat_<char>对应的是CV_8S,

Mat_<int>对应的是CV_32S,

Mat_<float>对应的是CV_32F,

Mat_<double>对应的是CV_64F,

对应的数据深度如下:

• CV_8U - 8-bit unsigned integers ( 0..255 )

• CV_8S - 8-bit signed integers ( -128..127 )

• CV_16U - 16-bit unsigned integers ( 0..65535 )

• CV_16S - 16-bit signed integers ( -32768..32767 )

• CV_32S - 32-bit signed integers ( -2147483648..2147483647 )

• CV_32F - 32-bit floating-point numbers ( -FLT_MAX..FLT_MAX, INF, NAN )

• CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: