opencv Mat 16 bits from QVector

opencv Mat 16 bits from QVector

本文关键字:from QVector bits Mat opencv      更新时间:2023-10-16

这可能是一个非常基本的问题。我想建立一个cv::Mat从QVector。它在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。谢谢你!

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());