2016-06-20 5 views
-3

私は、C++とOpenCvライブラリのComputer Visionプロジェクトに取り組んでいます。私は頻繁に私の研究の間のコードのようなものを参照してください。
image_はCVである::マット
cが、私はそれがクラスタ内のブール値を入れると思うint型a =(b == c)の結果は何ですか?

cv::Mat cluster = (image_ == c)*255; 

ですが、私は本当にわかりません。 OpenCV documentation of ==から

+0

このコードの 'image_'と' c'の種類は何ですか? – Mankarse

+3

'=='( 'image_'と' c'の型について)とそれが '*'をどのように定義するかについてはOpenCV **のドキュメント**を参照する必要があります( '==' int)を使用します。おそらく '=='は0/1値の行列を生成し、おそらく '*'はその行列を与えられた数だけスケーリングしたものにします。しかし、 '=='は単一の 'bool'値を生成することができます。ドキュメントをチェックしてください。 –

+0

更新:ドキュメントをチェックした後、それは0/1値の行列ではなく0/255値の行列です。 –

答えて

6

は、その行列に適用:

比較の結果は、その要素が、特定の要素または要素のペアが満たす場合には(255に設定されている8ビットシングルチャンネルマスクであります条件)または0

スケーリング:A*alpha

すなわち、ここまでの3つの答えは、がこの文脈で常にboolを生成すると仮定した場合、間違っています:image_cのタイプに依存し、それらが行列の場合は上記の引用符が適用されます。そうでない場合、コードがコンパイルされるかどうかはわかりません。しかし、あなたはそれを確認することができます。

+2

''(image_ == c) 'の結果は、image_がcと255ではないエントリ0の行列ですここで、image_はcに等しい。次に、8ビット行列が255に飽和しているため、各行列エントリには255が掛けられます。 少なくとも、行列型が標準型である場合。 – Micka

+1

ここで 'image_'はおそらく' cv :: Mat'(単一チャンネル)ですが、 'c'は' image_'と同じサイズのスカラーか 'cv :: Mat'(シングルチャンネル)です。 – Miki

+0

助けてくれてありがとう – Freddykong

関連する問題