Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java openCV中棕色的HSV值范围是多少?_Java_Android_Opencv_Image Processing - Fatal编程技术网

Java openCV中棕色的HSV值范围是多少?

Java openCV中棕色的HSV值范围是多少?,java,android,opencv,image-processing,Java,Android,Opencv,Image Processing,我是openCV的新手。我已经能够用遮罩计算图像的绿色和黄色像素。我想知道openCV中棕色的HSV范围是多少 private void testBrownPixelCount(Mat originalMat) { if(isMatEmpty(originalMat)){ Log.i(TAG, "Empty Original Mat at testBrownPixCoutn()"); }else{ //Perform: Ma

我是openCV的新手。我已经能够用遮罩计算图像的绿色和黄色像素。我想知道openCV中棕色的HSV范围是多少

    private void testBrownPixelCount(Mat originalMat) {
    if(isMatEmpty(originalMat)){
        Log.i(TAG, "Empty Original Mat at testBrownPixCoutn()");
    }else{
        //Perform:
        Mat maskMat = Imgcodecs.imread(testFilePath);
        Mat bgr = new Mat();
        Imgproc.cvtColor(maskMat, bgr, Imgproc.COLOR_BGR2RGB);
        Mat maskMatHsv = new Mat();
        Imgproc.cvtColor(bgr, maskMatHsv , Imgproc.COLOR_RGB2HSV);

        //iF NOt; use RGB2HSV:
        Mat brownMat = new Mat();
        Scalar min_brown = new Scalar(20,100,100);
        Scalar max_brown = new Scalar(30,255,255);
        Core.inRange(maskMatHsv, min_brown, max_brown, brownMat);
        Log.i(TAG, "Brown Mat Non-zeros:" + Core.countNonZero(brownMat));

        Bitmap bitmapMat = Bitmap.createBitmap(brownMat.cols(), brownMat.rows(), Bitmap.Config.ARGB_8888);
        Utils.matToBitmap(brownMat, bitmapMat);
        imgView_testView.setImageBitmap(bitmapMat);

    }

结果显示为黑色的imageView,它甚至检测不到黄色的。您可以查看我的答案,其中深入介绍了如何绘制/查看一系列不同的HSV值

您还可以查看外部站点,这些站点允许您使用值来了解颜色空间。在HSV中,棕色对应较高的饱和度级别(较低的值变得更灰)和中等值级别(较低的为黑色,较高的为白色),色调介于(大约)20度(对于红色砖颜色)到40度(对于沙颜色)。但在OpenCV中,色调度被二除,以使其适合255以下,因此色调值更像是10到20

使用链接答案中的代码,我在HSV中生成了从
[10100,20]
[20255200]
的一系列棕色值的
gif

这似乎包含了大多数棕色的概念,但是如果你想让颜色更暗、更亮、更灰等等,你可以使用这些值

寻找好的阈值的另一种方法是创建一个程序,让您可以尝试一下。例如,我在python和OpenCV中使用了类似于photoshop中魔术棒选择器的选项,它允许您定义一个阈值,单击一个像素,它将选择与您单击的位置连接的类似颜色的像素。此工具将打印最高和最低颜色值,还将打印平均颜色和标准偏差,以便更好地控制与所选颜色类似的阈值。您可以看到正在使用它的一些
gif

使用值的另一种方法是使用OpenCV创建轨迹栏,提供所有最小和最大阈值,并在每次更改值时使用阈值图像更新屏幕。我在python和OpenCV中也对此进行了讨论。您可以看到正在使用它的一些
gif

如果您仔细阅读这两个项目的代码,您可以了解如何构建类似的程序来玩弄各种值,以便在不同的颜色空间中更轻松地工作。

另外,来自:颜色坐标

“HSV(h,s,v)(30°,100%,59%)”

因此,布朗的“理想”开放CVHue值为
15
,因为,因此
30/2=15
。对于S饱和意味着
255
(因为255是开放CV中
Scalar
通道的最大值),对于V平均值为59%(59/100)*255=150,对于
Scalar
通道。因此,“理想”布朗
Scalar()
是:

Scalar ideal_brown = new Scalar(15,255,150);
要添加一些“接近棕色”的彩色像素,您可以:

1) 为“更红”的彩色像素从色调中减去一些值

2) 为“更多绿色”彩色像素的色调添加一些值

3) 从“颜色较浅”像素的饱和度中减去一些值(因为255已经是最大值,所以不能添加)

4) 从“更暗”像素的值中减去一些值

5) 为“更亮”像素的值添加一些值

所以

Scalar min_brown=新标量(15-、255-、150-);
标量最大值=新标量(15+,255,150+;

另外,请查看的答案。

检查这里:这里:我已经阅读了有关您对HSV值的深入解释的链接,我学到了很多。事实上,我认为有了这个解释,我可以自己测试HSV值。我真的很感激,请继续分享知识,帮助人们。
Scalar min_brown = new Scalar(15-<delta1_for_hue>,255-<delta1_for_saturation>,150-<delta1_for_value>);
Scalar max_brown = new Scalar(15+<delta2_for_hue>,255,<delta2_for_saturation>,150+<delta2_for_value>);