gpt4 book ai didi

opencv - 在Opencv中提取图像中颜色(红色,蓝色,绿色,黄色,橙色)的百分比?

转载 作者:行者123 更新时间:2023-12-02 17:51:02 26 4
gpt4 key购买 nike

我必须区分5种类型的图像,这些图像可能主要是红色,绿色,蓝色,橙色或黄色,而白色或黑色。我必须找到图像中突出的颜色。

图像来源是网络摄像头,因此实际颜色还取决于图像的照明度和距网络摄像头的距离。我的图像的示例可以在这里看到:

http://ian-albert.com/hazmat_placards/placard-2-flammable-gas.png

我正在尝试根据“色相”值计算百分比。我为每种颜色指定了一些范围。我的范围是:

红色: 0-10
绿色: 50-65

黄色: 18-21

蓝色: 100-115

问题:即使显示的图像不是红色,我的红色百分比还是很高。

我的代码如下:

int findRect::checkByHSV(int svmResult, Mat detectedSquare)
{

Mat hsv_img;
cvtColor(detectedSquare,hsv_img,CV_BGR2HSV);

Vec3b pixel;
float totalPixel=0; // to count the total number of pixels in an image---to get the Percentage later
float totalClass[6];// because we want to test for 5 classes+ a garbage class.{{ Class-0 -> Garbage, Class-1->Orange, Class-2->Green, Class-3->Red,
// Class-4->Blue, Class-5->Yellow }}

for(int i=0; i<hsv_img.rows; i++)
{
for (int j=0; j<hsv_img.cols; j++)
{

totalPixel++;
pixel= hsv_img.at<Vec3b>(i,j);

if( pixel[0]>0 && pixel[0]<1 ) totalClass[1]++; // Class-1->Orange
else if ( pixel[0]>50 && pixel[0]<65 ) totalClass[2]++; // To check Green class-2 //svmResult==2 &&
else if ( pixel[0]>0 && pixel[0]<10 ) totalClass[3]++; // Class-3->Red
else if ( pixel[0]>100 && pixel[0]<115 ) totalClass[4]++; // Class-4->Blue
else if ( pixel[0]>18 && pixel[0]<21 ) totalClass[5]++; // Class-5->Yellow
}

}

float percentage[5];
totalClass[0]=0; //Putting zero to the Garbage class

for (int i=0; i<=5; i++)
{
percentage[i] = (totalClass[i] / totalPixel )*100;
}

cout<<"\n Organge: "<<percentage[1]<<" Green: "<<percentage[2]<<" Red: "<<percentage[3]<<" Blue: "<<percentage[4]<<" Yellow: "<<percentage[5]<<"\n \n";

return svmResult;
}

最佳答案

您提到您可以有一些白色和/或一些黑色。

HSV允许您具有H分量的任何值,并且:

  • 高V,低S给出白色
  • 低V给出黑色

  • 换句话说:如果仅根据H分量判断,白色和黑色可以为您提供红色,绿色或橙色或...等。

    就我个人而言,我会坚持使用RGB(或BGR等),或者补偿S和V会影响颜色的事实。

    关于opencv - 在Opencv中提取图像中颜色(红色,蓝色,绿色,黄色,橙色)的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462502/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com