2013-11-25 39 views
5

簡単な質問ですが、理解できません。cv :: maskはopencv minMaxLocのように見えますか?

マスクはどのように見えますか?(入力配列src、double * minVal、double * maxVal = 0、Point * maxLoc = 0、Point * maxLoc = 0、InputArray mask = noArray()

これは1次元のMat(1行のみ)で、Mat(maxRowGChnnl)の間隔(upperBorderまで下限)のminMaxの位置が必要です。あなたの助けのための

OpenCV Error: Assertion failed ((cn == 1 && (mask.empty() || mask.type() == CV_8 
U)) || (cn >= 1 && mask.empty() && !minIdx && !maxIdx)) in unknown function, fil 
e ..\..\..\src\opencv\modules\core\src\stat.cpp, line 787 

ありがとう:とabborts上記

maxRowGChnnl {flags=1124024325 dims=2 rows=1 ...} cv::Mat 
flags 1124024325 int 
dims 2 int 
rows 1 int 
cols 293 int 

コード:

int lowerBorder,upperBorder; 
lowerBorder = 30; 
upperBorder = 100; 
cv::minMaxLoc(maxRowGChnnl.row(0),&minValue,&maxValue,&minLoc,&maxLoc,(lowerBorder,upperBorder)); 

これはmaxRowGChnnlサイズです。

答えて

5

マスクは必要ありませんが、maxRowGChnnlの部分行列は必要ありません。

cv::minMaxLoc(maxRowGChnnl(Rect(lower,0,upper-lower,0)),&minValue,&maxValue,&minLoc,&maxLoc); 
+0

これは私が考えていた答え(解決方法)です。しかし実際にはうまくいかなかった。 maxLocを印刷するとき、私は[-1、-1]をreseaveします。 maxRowGChnnl(cv :: Rect(lower、0、upper-lower、0))を出力するとき、出力は[] - 空です。しかし、Mat maxRowGChnnlには値が入っています!私は間違って何をしていますか? – user1651460

+1

Oups。私の悪い。高さはもちろん1でなければなりません。 0ではありません。maxRowGChnnl(cv :: Rect(lower、0、upper-lower、1)) –

+0

パーフェクトを使用してください。それでおしまい!さて、私は今すぐrectの建設を参照してください。 – user1651460

4

マスクは、axRowGChnnl.row(0)と同じサイズでCV_8UC1と同じサイズである必要があります。有効な要素の値は0に設定されていなければなりません。