Wie wählt man geeignete Skalare Werte bei der Verwendung von InRange in OpenCV

Ich versuche zu erkennen, die weißen Formen in ein Objekt und kann erfolgreich tun es für 1 video.

//Create and display a new matrix for triangles
triangles = src.clone();
GaussianBlur(triangles, triangles, Size(5, 5), 0, 0);
inRange(triangles, Scalar(150,150,150), Scalar(255, 255, 255), triangles);
imshow("triangles", triangles);

Gibt mir das Ergebnis

http://s8.postimg.org/o9xg284jp/triangles.png

Jedoch, wenn ich eine andere video - dann wird der Skalare Wert von 150 möglicherweise nicht angemessen sein (zum Beispiel, wenn es ist ein Licht, Umgebung... alles wird erkannt)

http://s8.postimg.org/m09brgvlx/bad_triangles.png

Für dieses video, ich würde ändern müssen, die mindestens scalar rund machen 190-200, um richtig zu funktionieren. Meine Frage ist - ist es ein guter Weg, um zu bestimmen, den richtigen skalaren Wert zu verwenden? Ich weiß, es klingt einfach, aber ich habe Kopfschmerzen, weil es!

InformationsquelleAutor Paddy | 2013-07-19
Schreibe einen Kommentar