Ich habe ein Bild von einer Kaffeedose mit einer orangefarbenen Deckelposition, die ich finden möchte. Hier ist es .Auswahl der korrekten oberen und unteren HSV-Grenzen für die Farberkennung mit `cv :: inRange` (OpenCV)
Das Dienstprogramm gcolor2 zeigt HSV in der Mitte des Deckels an (22, 59, 100). Die Frage ist, wie wählt man dann die Grenzen der Farbe? Ich habe versucht, min = (18, 40, 90) und max = (27, 255, 255), aber haben unerwartet bekam
Hier ist der Python-Code:
import cv
in_image = 'kaffee.png'
out_image = 'kaffee_out.png'
out_image_thr = 'kaffee_thr.png'
ORANGE_MIN = cv.Scalar(18, 40, 90)
ORANGE_MAX = cv.Scalar(27, 255, 255)
COLOR_MIN = ORANGE_MIN
COLOR_MAX = ORANGE_MAX
def test1():
frame = cv.LoadImage(in_image)
frameHSV = cv.CreateImage(cv.GetSize(frame), 8, 3)
cv.CvtColor(frame, frameHSV, cv.CV_RGB2HSV)
frame_threshed = cv.CreateImage(cv.GetSize(frameHSV), 8, 1)
cv.InRangeS(frameHSV, COLOR_MIN, COLOR_MAX, frame_threshed)
cv.SaveImage(out_image_thr, frame_threshed)
if __name__ == '__main__':
test1()
Ich überprüfte die Werte (22, 59, 100) als HSV, und sie scheinen nicht die jede Farbe ähnlich denen entsprechen der der Deckel. Aber als BGR machen sie Sinn. Wie haben Sie diese Werte abgerufen? – karlphillip
Hier ist ein Screenshot mit gcolor2 http://imageshack.us/photo/my-images/23/rgb2hsv.png/. Ich habe dann die Farbnummer # FFA069 unter http: //www.yafla.com/yaflaColor/ColorRGBHSL.aspx?RGB = & Colors = ,,,,,,,, überprüft und die Konvertierung ist die gleiche. –
Dies liegt wahrscheinlich an verschiedenen HSV-Bereichen in OpenCV, nämlich H: 0 - 180, S: 0 - 255, V: 0 - 255. –