【问题标题】:opencv Mat 16 bits from QVector来自 QVector 的 opencv Mat 16 位
【发布时间】:2016-10-25 11:15:44
【问题描述】:

这可能是一个非常基本的问题。 我想从 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 的情况下显示。 谢谢!

【问题讨论】:

    标签: c++ qt opencv


    【解决方案1】:

    CV_16UC1 具有基础类型 unsigned short,但没有 uint。由这些类型的不同大小引起的问题。将您的向量定义为QVector&lt;unsigned short&gt; vector;。这应该可以解决问题:

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

    【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2013-02-20
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多