2012-07-11 8 views
5

このコード行は何を意味し、どうすればこのコードをjavacvに変換できますか?opencvの次のコード行の意味は何ですか?

gray = Scalar::all(255); 

これはこのコード行に関連する全体コードです。

Mat src = imread("in.jpg"), gray; 

cvtColor(src, gray, CV_BGR2GRAY); 
threshold(gray, gray, 230, 255, THRESH_BINARY_INV); 
vector<Vec4i> hierarchy; 
vector<vector<Point> > contours; 
findContours(gray, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); 

gray = Scalar::all(255); 

これについて何人か説明してください。

+0

については、このコードは何ですか? –

+0

イメージ内に輪郭線を見つけるために使われ、後にいくつかのコードがあります。 – NadLnk

+2

白い線が灰色になると思います。 cppコードを実行することができれば、それを実行し、最後に灰色を表示します。 –

答えて

2

に変換の問題を持つべきではありませんので、私は私のコメントで述べたように

Mat::setTo()方法はまた、JavaCVで利用可能であるべき、白にグレーの画像を設定するために使用されます。

どのようなメリットがありますか?このコードが何であるかを知っていれば、完全なコードを見ることができます。

Javaに関して、OpenCVはJavaコードを見つけることができるいくつかのアンドロイドサンプルを持っています。

これらは確認できます。 I saw a similar function theremWhilte = Scalar.all(255);

またJavaCVサンプルを確認してください:http://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2

2

ハイライト表示されたコード行は、グレイを255に設定します。これは、OpenCVでマトリックスを値に設定するために使用できる方法の1つです。それを行うには

他の方法は、以下のとおりです。

gray.setTo(255); // prior to 2.3.1 it was a buggy on multichannel images 
gray = 255; // prior to 2.3.1 it was a buggy on multichannel images 

gray.setTo(Scalar::all(255)); // it works regardless the OpenCV version. 

しかし、私は質問がfindfContours後、なぜこのソースラインだと思う...

ドキュメントによると、findContoursは、それが取り組んでいる画像を修正(輪郭を抽出し、輪郭がなくなるまで輪郭を抽出し、次の輪郭に進む)。結果はガベージイメージ(おそらく黒)です。

したがって、255行目は、他の用途ではそれをクリアします。あなたはJavaの

+0

は0または255ですか? –

+0

これは簡単なコード例ですか? – NadLnk

関連する問題