2016-04-08 12 views
0

Ich versuche, Code zu entschlüsseln, den ich verwenden möchte, aber der Code erfordert Kalibrierung, aber ich bin verwirrt, ob es HSV oder RGB verwendet? Sorry für die noob Frage, aber ich bin nicht vertraut mit OpenCV. Hier ist ein Ausschnitt aus dem Code:OpenCV Java RGB oder HSV?

Imgproc.cvtColor(matOriginal,matHSV,Imgproc.COLOR_BGR2HSV);   
     Core.inRange(matHSV, LOWER_BOUNDS, UPPER_BOUNDS, matThresh); 
     Imgproc.findContours(matThresh, contours, matHeirarchy, Imgproc.RETR_EXTERNAL, 
     Imgproc.CHAIN_APPROX_SIMPLE); 

Ich weiß, ich habe die untere und obere Grenze zu ändern, aber soll ich die RGB-Werte oder HSV-Werte? Danke!

Antwort

1
Imgproc.cvtColor(matOriginal,matHSV,Imgproc.COLOR_BGR2HSV); 

Diese Linie sicherzustellen, dass die Werte von matHSV sind in HSV-Farbsystem. Also bedeutet ab jetzt jede Operation auf matHSV sollte unter Berücksichtigung aller Werte in HSV getan werden. Also, in dieser Zeile:

Core.inRange(matHSV, LOWER_BOUNDS, UPPER_BOUNDS, matThresh); 

LOWER_BOUNDS und UPPER_BOUNDS sollten HSV-Wert sein.

+0

Die oberen und unteren Grenzen sollten jetzt die Werte in H-S-V-Reihenfolge sein? Einfach überprüfen, weil ich weiß, dass es für RGB – Axton

+0

umgedreht ist. Ja H-S-V Auftrag. Für RGB wird es tatsächlich nicht gewendet. Es ist BGR, das ist ein völlig anderes Farbsystem von RGB (Sie sind gleich, aber praktisch umgedreht, aber theoretisch sind sie verschiedene Systeme) –

+1

Eigentlich scheint Ihre Aussage über bgr falsch ...; D Siehe z.B. [hier] (http://www.learnopencv.com/why-does-opencv-use-bgr-color-format/) – Miki