opencvのグレー画像の位置で、最も明るいピクセルの上位1%(または上位100ピクセル)を見つけるのを手伝ってくれる人はいますか。cvMinMaxLoc() は最も明るいピクセル位置のみを提供するためです。
どんな助けでも大歓迎です。
opencvのグレー画像の位置で、最も明るいピクセルの上位1%(または上位100ピクセル)を見つけるのを手伝ってくれる人はいますか。cvMinMaxLoc() は最も明るいピクセル位置のみを提供するためです。
どんな助けでも大歓迎です。
これは単純ですが非効率的で愚かな方法です:
for i=1:100
get brightest pixel using cvMinMaxLoc
store location
set it to a value of zero
end
効率を気にしなければ、これでうまくいくはずです。
また、cvInRangeS をチェックして、低しきい値と高しきい値を定義する同様の値の他のピクセルを見つける必要があります。
最も論理的な方法は、画像全体を繰り返し処理してから、ピクセルの値を取得することmax
ですmin
。次に、目的の割合 (この場合は 1%) を与えるしきい値を選択します。その後、もう一度反復して、指定されたしきい値を超える各ピクセルの座標を保存i
します。j
このようにして、マトリックスを 100 回 (またはピクセルの 1% 回) ではなく 2 回だけ反復し、最も明るいものを選択して削除します。
OpenCV マットは多次元配列です。灰色の画像は、0 から 255 までの値を持つ 2 次元配列です。このように行列を繰り返し処理できます。
for(int i=0;i < mat.height();i++)
for(int j=0;j < mat.width();j++)
mat[i][j];
代わりにcvThresholdを使用してみてください。