这可能是一个非常基本的问题。 我想从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]
我的问题是为什么会发生这种情况以及如何在没有这些情况下展示。 谢谢!
答案 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());