C++ opencv Mat来自QVector的16位
这也许是一个非常基本的问题。 我想从QVector构建一个cv::Mat。它在8位Mat机中运行良好C++ opencv Mat来自QVector的16位,c++,qt,opencv,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()); 但当我使用16位的垫子时 QVector<uint> vecto
QVector<uchar> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288;
Mat testMat(2,4,CV_8UC1,vector.data());
但当我使用16位的垫子时
QVector<uint> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288;
Mat testMat(2,4,CV_16UC1,vector.data());
我的问题是为什么会发生这种情况,以及在没有这些0的情况下如何显示。
谢谢大家!
CV_16UC1
具有基础类型无符号短码
,但不具有uint
。这些类型的大小不同导致的问题。将向量定义为QVector代码>。这应该可以解决问题:
QVector<unsigned short> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288;
Mat testMat(2,4,CV_16UC1,vector.data());
QVector;
矢量
[1, 0, 289, 0;
3000, 0, 7, 0]
QVector<unsigned short> vector;
vector<<1<<289<<3000<<7<<2<<255<<266<<288;
Mat testMat(2,4,CV_16UC1,vector.data());