2016-09-16 148 views
0

我想做一個具有圖像處理能力的android應用程序。如何簡單地通過使用位圖就可以將具有相似顏色的像素的輪廓線?Android圖像處理檢測顏色和把輪廓線

我看過這個video,但它是實時處理,顯示輪廓線。我想爲我的應用程序使用靜態圖像,並顯示具有相似顏色的像素的輪廓線。

回答

1

首先,您應該考慮一個圖像處理庫來爲您完成這項工作!我認爲OpenCV是一個不錯的選擇。然後加載圖像,將其轉換爲HSV空間並使用inRange應用顏色閾值。在結果圖像中,您使用findContours檢測輪廓,並使用drawContourspolylines來繪製輪廓。完成!

編輯

轉換你的輸入圖像,例如RGB轉換爲hsv:

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

定義上限值和下限值!看看HSV色輪並選擇合適的範圍。請注意,HSV適用於3個8位通道,但H通道不適用,因此您必須將此值除以2.在OpenCV中,H的範圍爲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

是的。你指定你的下限和上限。這個範圍內的值將被分割。有關詳細說明,請參閱[這裏](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#inrange) – PSchn

+0

您是否有任何檢測類似顏色的代碼片段? – Shulz