2016-05-08 6 views
0

Ich versuche, die Titelleiste aus dem Bild unten mit Opencv zu extrahieren.Farberkennung mit opencv

enter image description here

ich den folgenden Code verwenden -

System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    Mat original = Imgcodecs.imread("D:/test_bg_extract.png", Imgcodecs.CV_LOAD_IMAGE_UNCHANGED); 
    Mat hsvMat = new Mat(); 
    Imgproc.cvtColor(original, hsvMat, Imgproc.COLOR_BGR2HSV); 
    Mat dst = new Mat(); 
    Core.inRange(hsvMat, new Scalar(23,231,205), new Scalar(23,231,205), dst); 

Ich benutzen einen Farbwähler den HSV-Wert der Titelleiste, um zu bestimmen (aus dem hsvMat Bild anzuzeigen umgewandelt). Wenn der Code ausgeführt wird, um die Ausgabe anzuzeigen, sehe ich einen leeren Bildschirm. Ich kann nicht sagen, was ich falsch mache. Wähle ich die falsche HSV-Farbe? Wenn ich den genauen RGB-Code kenne, sollte ich dann sogar das Bild in HSV umwandeln? (Dies scheint jedoch die Standardmethode vieler Codebeispiele im Internet zu sein).

Antwort

0

Ok, ich löste es mit RGB-basierten Farben, wechselte zu BGR und spezifizierte die Farbe, die ich brauche. So funktionierte das -

System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    Mat original = Imgcodecs.imread("D:/test_bg_extract.png", Imgcodecs.CV_LOAD_IMAGE_UNCHANGED); 
    Mat dst = new Mat(); 
    Core.inRange(original, new Scalar(132,178,205), new Scalar(132,178,205), dst); 
+0

Ich habe gelernt, dass ich HSV nicht verwenden muss, wenn ich eine Reichweite brauche. In meinem Fall war es nur ein einzelner RGB-Wert. – Jay