HSV空间中的Android OpenCV颜色检测

时间:2015-07-12 21:25:06

标签: android opencv colors detection

我试图在OpenCV中为android(实时摄像机视图)编写颜色(绿色)检测代码。首先使用RGB空间,它的一半没问题但是当切换到HSV空间时,结果就是混乱!

这是我的代码

    Mat A = src;
    Mat B = dst;
    Imgproc.cvtColor(A, A, Imgproc.COLOR_RGB2HSV,3);
    Size sizeA = A.size();
    for (int i = 0; i < sizeA.height; i++)
        for (int j = 0; j < sizeA.width; j++) {
            double[] data = A.get(i, j);
            if (data[0]>=95 && data[0]<=130 & data[1]>=150 && data[1]<=255 & data[2]<=150 && data[2]<=255){
                 data[0] = 120;
                 data[1] = 255 ;
                 data[2] = 255 ;
            }
            else
                  data[0] = 100;
                  data[1] = 255;
                  data[2] = 255;
              B.put(i, j, data);
        }
    Imgproc.cvtColor(B, B, Imgproc.COLOR_RGB2RGBA, 4);}
}

这段代码有什么问题?这个方法运行得很慢。为什么?

(我是Android和OpenCV的新手)

TNX

1 个答案:

答案 0 :(得分:0)

您应该从BGR(非RGB)转换为HSV,但这取决于此代码段之前的代码

Imgproc.cvtColor(A, A, Imgproc.COLOR_BGR2HSV,3);

检查您的if语句并始终使用&&(有时使用&

您应该从HSV转换为RGB然后转换为RGBA

Imgproc.cvtColor(B, B, Imgproc.COLOR_HSV2RGB, 3);}
Imgproc.cvtColor(B, B, Imgproc.COLOR_RGB2RGBA, 4);}