【问题标题】:Finding exact HSV values of colors查找颜色的准确 HSV 值
【发布时间】:2013-07-04 15:36:10
【问题描述】:

使用cvInRangeS(hsvframe,cvScalar(90, 40, 50)cvScalar(255, 90, 255),threshy), 如何获得每种颜色(紫色和黄色)的准确值范围?

【问题讨论】:

  • 我确定这是在 OpenCV 示例中,或者在某个地方的教程代码中。一个带有滑块的小应用程序,您可以随意使用,直到找到所需的颜色。
  • 在寻找类似问题的答案时,我在这里找到了一个用 Python 实现的完美解决方案:stackoverflow.com/questions/38877102/…

标签: opencv range hsv


【解决方案1】:

使用color picker web-site 查看它们的色调值。

http://www.color-hex.com/color/eca314

http://www.color-hex.com/color/923ca7

请注意,您需要在 (0-255) 范围内转换色相角 (0-360)。对两种颜色都使用 inranges 函数并添加图像:

cvInRangeS(hsvframe,cvScalar(20, 0, 0), cvScalar(30, 255, 255),threshorange);
cvInRangeS(hsvframe,cvScalar(200, 0, 0), cvScalar(210, 255, 255),threshpurple);
cvOr(threshorange, threshpurple, threshy);

【讨论】:

  • 橙色:12-25 紫色:143-162 试试这些。
【解决方案2】:

你可能想试试这个:

Mat matSrcCopyForHSVColorDisplay, HSV_image_display;

//Make a copy of the original image
matSrcCopyForHSVColorDisplay = matSrc.clone(); 

//Convert RGB to HSV
cvtColor(matSrc, HSV_image_display, CV_BGR2HSV); 

//To access each pixel in the images we are using this syntax:
//image.at(y,x)[c] where y is the row, x is the column 
//and c is H, S or V (0, 1 or 2)
Vec3b p = HSV_image_display.at<Vec3b>(50, 10); //Vec3b - Array of 3 uchar numbers

//p[0] - H, p[1] - S, p[2] - V
printf(text, "H=%d, S=%d, V=%d", p[0], p[1], p[2]); 

//putText(matSrcCopyForHSVColorDisplay, text, Font_Position, 
//Font_Type, Font_Scale, Font_Colour, Font_Thickness); 
//Display the text
putText(matSrcCopyForHSVColorDisplay, text, center, 
        FONT_HERSHEY_COMPLEX_SMALL, 2, cvScalar(255, 0, 0), 1, CV_AA);

//Refresh the image
imshow("HSV Value", matSrcCopyForHSVColorDisplay); 
printf("H=%d, S=%d, V=%d\n", p[0], p[1], p[2]);

【讨论】:

    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多