Mam obraz puszki po kawie z pomarańczową pozycją pokrywki, którą chcę znaleźć. Tutaj jest to .Wybieranie prawidłowych górnych i dolnych granic HSV do wykrywania kolorów za pomocą `cv :: inRange` (OpenCV)
Narzędzie gcolor2 pokazuje HSV w środku pokrywy (22, 59, 100). Pytanie brzmi, jak wybrać granice koloru, a następnie? I próbuje min = (18, 40, 90), i Max = (27, 255, 255), ale posiadają nieoczekiwane
Oto kod Pythonie
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()
Sprawdziłem wartości (22, 59, 100) HSV, i nie wydaje się, aby dopasować dowolny kolor podobny do tych z pokrywa. Ale jako BGR mają sens. W jaki sposób odzyskałeś te wartości? – karlphillip
Oto zrzut ekranu z gcolor2 http://imageshack.us/photo/my-images/23/rgb2hsv.png/. Następnie sprawdziłem numer koloru # FFA069 na http: //www.yafla.com/yaflaColor/ColorRGBHSL.aspx? RGB = & Kolory = ,,,,,,,,, i konwersja jest taka sama. –
Jest to prawdopodobnie spowodowane różnymi zakresami HSV w OpenCV, a mianowicie H: 0 - 180, S: 0 - 255, V: 0 - 255. –