opencv来自QVector的16位

时间:2016-10-25 11:15:44

标签: c++ qt opencv

这可能是一个非常基本的问题。 我想从QVector构建一个cv :: Mat。它适用于8位Mat。

QVector<uchar> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288;
Mat testMat(2,4,CV_8UC1,vector.data());

输出:

[  1,  33, 184,   7;
   2, 255,  10,  32]

但是当我使用16位Mat时。

QVector<uint> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288; 
Mat testMat(2,4,CV_16UC1,vector.data());

结果变为:

[1, 0, 289, 0;
 3000, 0, 7, 0]

我的问题是为什么会发生这种情况以及如何在没有这些情况下展示。 谢谢!

1 个答案:

答案 0 :(得分:1)

CV_16UC1的基础类型为unsigned short,但不是uint。由这些类型的不同大小引起的问题。将矢量定义为QVector<unsigned short> vector;。这应该可以解决问题:

QVector<unsigned short> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288; 
Mat testMat(2,4,CV_16UC1,vector.data());