I have the following BGR image (a car's front), I want to recognize its color
I converted it to HSV (I know imshow() doesn't understand the HSV and will print it as BGR)

1: Now, I want to get the hue value and know in which range it lies to recognize the color
- how to calculate the number or value of hue?
 - how to specify ranges? using scalar method gives me bgr ranges
 
Code
int main()
{
    Mat image;
    image = imread("carcolor.png", CV_LOAD_IMAGE_COLOR);
    if (!image.data)
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }
    // Create a new matrix to hold the HSV image
    Mat HSV;
    // convert RGB image to HSV
    cvtColor(image, HSV, CV_BGR2HSV);
    namedWindow("Display window", CV_WINDOW_AUTOSIZE);
    imshow("Display window", image);
    namedWindow("Result window", CV_WINDOW_AUTOSIZE);
    imshow("Result window", HSV);
    vector<Mat> hsv_planes;
    split(HSV, hsv_planes);
    Mat h = hsv_planes[0]; // H channel
    Mat s = hsv_planes[1]; // S channel
    Mat v = hsv_planes[2]; // V channel
    namedWindow("hue", CV_WINDOW_AUTOSIZE);
    imshow("hue", h);
    namedWindow("saturation", CV_WINDOW_AUTOSIZE);
    imshow("saturation", s);
    namedWindow("value", CV_WINDOW_AUTOSIZE);
    imshow("value", v);
    //// red color range
    Scalar hsv_l(170, 150, 150);
    Scalar hsv_h(180, 255, 255);
    Mat bw;
    inRange(HSV, hsv_l, hsv_h, bw);
    imshow("Specific Colour", bw);
    ////
    // hue value
    //define ranges
    waitKey(0);
    return 0;
}


