2016-10-12 20 views
0

structの値をinRange関数に挿入できないようです。プログラムはコンパイルされますが、しきい値は想定通りには機能しません。構造体からではなく値を挿入するとうまくいきます。構造体の値をinRangeに挿入できません。openCV

struct objects{ 
    int iLowH; 
    int iHighH; 

    int iLowS; 
    int iHighS; 

    int iLowV; 
    int iHighV; 

    Point coordinate; 
}; 


int iLowH = 0; 
int iHighH = 30; 

int iLowS = 182; 
int iHighS = 255; 

int iLowV = 0; 
int iHighV = 255; 

int refArea=10000; 

orange.iLowH = 0; 
orange.iHighH = 100; 
orange.iLowS = 182; 
orange.iHighS = 255; 
orange.iLowV = 100; 
orange.iLowH = 255; 

inRange(hsvImage, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), threshold); 

imshow("hsv",threshold); 

これは、これが動作しないだけでなく

struct objects{ 
    int iLowH; 
    int iHighH; 

    int iLowS; 
    int iHighS; 

    int iLowV; 
    int iHighV; 

    Point coordinate; 
}; 


int iLowH = 0; 
int iHighH = 30; 

int iLowS = 182; 
int iHighS = 255; 

int iLowV = 0; 
int iHighV = 255; 

int refArea=10000; 

orange.iLowH = 0; 
orange.iHighH = 100; 
orange.iLowS = 182; 
orange.iHighS = 255; 
orange.iLowV = 100; 
orange.iLowH = 255; 

inRange(hsvImage, Scalar(orange.iLowH, orange.iLowS, orange.iLowV), Scalar(orange.iHighH, orange.iHighS, orange.iHighV), threshold); 

imshow("hsv",threshold); 

動作します。閾値画像は黒色のみを示す。 iLowH = orange.iLowHの値を変更すると、それもうまくいきません。もし私がそれらの1つを変更しても、それは動作しません。オレンジの値を印刷すると正しい値が表示され、オレンジ色のデータタイプを印刷すると、それぞれにintが表示されます。

答えて

0

orange.iHighVは初期化されていません。コード内で:それは、異なる結果につながることができるように

orange.iLowH = 0; 
orange.iHighH = 100; 
orange.iLowS = 182; 
orange.iHighS = 255; 
orange.iLowV = 100; 
orange.iLowH = 255; 
//  ^^ overwrites previous value 0, should probably be iHighV instead. 

実際のしきい値は、二つのバージョン(orange.iLowV = 100iHighH = 30orange.iHighH = 100iLowV = 0)間で異なります。

+0

私の愚かなああ、私はそれを二重チェックしなかった。ありがとう、たくさんの男! – Andira

関連する問題