Tengo una imagen de una lata de café con una posición de tapa naranja que quiero encontrar. Aquí está, .Elegir los límites HSV superior e inferior correctos para detección de color con`cv :: inRange` (OpenCV)
La utilidad gcolor2 muestra HSV en el centro de la tapa (22, 59, 100). La pregunta es cómo elegir los límites del color, entonces? Probé min = (18, 40, 90) y max = (27, 255, 255), pero han conseguido inesperado
Aquí está el código Python:
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()
I comprueban los valores (22, 59, 100) como HSV, y que no parecen coincidir con el de cualquier color similar a los de la tapa. Pero como BGR, tienen sentido. ¿Cómo recuperaste estos valores? – karlphillip
Aquí está la captura de pantalla con gcolor2 http://imageshack.us/photo/my-images/23/rgb2hsv.png/. Luego revisé el número de color # FFA069 en http: //www.yafla.com/yaflaColor/ColorRGBHSL.aspx? RGB = & Colors = ,,,,,,,,, y la conversión es la misma. –
Esto es probablemente debido a diferentes rangos HSV en OpenCV, es decir, H: 0 - 180, S: 0 - 255, V: 0 - 255. –