2016-10-25 14 views
1

これはおそらく非常に基本的な質問です。 QVectorからcv :: Matをビルドしたいと思います。 8ビットのMatでうまく動作します。opencv QVectorのMat 16ビット

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ビットマットを使用しています。

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()); 
関連する問題