2016-09-16 3 views
0

画像処理機能を備えたAndroidアプリケーションを作成しようとしています。ビットマップを使用するだけで、類似の色を持つピクセルで等高線をどのように配置できますか?Androidイメージ処理で色が検出され、等高線が表示される

これを見ましたが、これは輪郭線を表示するライブ処理です。私は自分のアプリケーションに静的な画像を使い、同様の色を持つ等高線を表示したいと思っていました。

答えて

1

まず、画像処理ライブラリについて考える必要があります。私はOpenCVが良い選択だと思う。次に、画像を読み込んでHSV空間に変換し、inRangeのカラー閾値を適用します。結果イメージでは、輪郭線をfindContoursで検出し、drawContoursまたはpolylinesで描画します。完了!

編集

ご入力画像は、例えば、変換RGBからhsv:

Imgproc.cvtColor(rgb,hsv,Imgproc.COLOR_RGB2HSV); 

上限値と下限値を定義してください。 HSVカラーホイールを見て適切な範囲を選んでください。 HSVは3つの8ビットチャネルに収まっていますが、Hチャネルはないので、この値を2で割ってください.Hの範囲はOpenCVでは0〜180です。 ここで赤のための例:

Scalar lower(0,100,100); 
Scalar upper(10,255,255); 
Core.inRange(hsv, lower, upper, segmentedImage); 

enter image description here

次に使用:

List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); 
Mat hierarchy = new Mat(); 
Imgproc.findContours(segmentedImage, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); 

今、あなたは各輪郭を反復処理し、いくつかのものを行うことができます!

+0

inRangeの目的は何ですか?それは似たような色の見える範囲ですか? – Shulz

+0

はい、本当にありがとうございます。あなたはあなたの下限と上限を指定します。この範囲の値はセグメント化されます。詳細な説明については、[here](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#inrange)を参照してください。 – PSchn

+0

類似の色を検出するスニペットはありますか? – Shulz

関連する問題