0
我想做一個具有圖像處理能力的android應用程序。如何簡單地通過使用位圖就可以將具有相似顏色的像素的輪廓線?Android圖像處理檢測顏色和把輪廓線
我看過這個video,但它是實時處理,顯示輪廓線。我想爲我的應用程序使用靜態圖像,並顯示具有相似顏色的像素的輪廓線。
我想做一個具有圖像處理能力的android應用程序。如何簡單地通過使用位圖就可以將具有相似顏色的像素的輪廓線?Android圖像處理檢測顏色和把輪廓線
我看過這個video,但它是實時處理,顯示輪廓線。我想爲我的應用程序使用靜態圖像,並顯示具有相似顏色的像素的輪廓線。
首先,您應該考慮一個圖像處理庫來爲您完成這項工作!我認爲OpenCV是一個不錯的選擇。然後加載圖像,將其轉換爲HSV空間並使用inRange
應用顏色閾值。在結果圖像中,您使用findContours
檢測輪廓,並使用drawContours
或polylines
來繪製輪廓。完成!
編輯
轉換你的輸入圖像,例如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);
然後使用:
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Mat hierarchy = new Mat();
Imgproc.findContours(segmentedImage, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
現在,你可以通過每個迭代的輪廓,並做一些東西!
inRange的目的是什麼?這是看起來相似顏色的可接受範圍嗎? – Shulz
是的。你指定你的下限和上限。這個範圍內的值將被分割。有關詳細說明,請參閱[這裏](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#inrange) – PSchn
您是否有任何檢測類似顏色的代碼片段? – Shulz