2016-10-13 18 views
0

私はopencvを初めて使うので、私は基本的な概念を学ぶために実験しています。Opencv:ピクセルの完全な行を設定するには?

私はシンプルなマットから始め、中間の行をある値に設定しようとしました。

私は、行全体が同じように表示されることを期待しましたが、行の最初の半分だけが白です。

enter image description here

#define SWIDTH 12 
#define SHEIGHT 12 

Mat m = Mat::zeros(SWIDTH, SHEIGHT, CV_16U); 

for (int x=0;x<SWIDTH;x++) 
    m.at<unsigned char>(SHEIGHT/2,x) = 65000; 

cv::Size size(512, 512); 
Mat mResized; 
cv::resize(m, mResized, size,0,0,INTER_NEAREST); 

cv::imshow("mResized", mResized); 
cv::imshow("m", m); 

なぜ半分だけの行が設定されていますか?

答えて

2

行列が符号なしshortデータ型のようです、あなたが使用する必要が意味するものではありません。

m.at<unsigned short>(SHEIGHT/2,x) = 65000; 

代わりのunsigned charあなただけの行の半分を埋めている理由は、これは説明することができます。

+0

おかげで、新人のミス。 –

2

また、forループを使用せずに、行のすべてのピクセルを設定するには、rowを使用することができます。

m.row(SHEIGHT/2) = 65000 
関連する問題