OpenCV中颜色的百分比

时间:2016-03-12 23:14:17

标签: java android opencv

我创建了一个从图像中提取RGB通道的函数,以计算图片的平均颜色。

我想要这样的结果:

图像A:红色层:25%,绿色层:40%,蓝色层:35%。

我在Android中使用Opencv,并且有一个可以拆分图层的功能,但是,如何计算???

Mat mRgb = m;
    List<Mat> lRgb = new ArrayList<Mat>(3);

    List<Mat> red = new ArrayList<Mat>(3);
    List<Mat> green = new ArrayList<Mat>(3);
    List<Mat> blue = new ArrayList<Mat>(3);

    Mat mRed = new Mat();
    Mat mGreen = new Mat();
    Mat mBlue = new Mat();

    //Split the RGB channels

    Core.split(mRgb, lRgb);

    //Apply Mat 

    Mat mR = lRgb.get(0);
    Mat mG = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);
    Mat mB = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);


    red.add(mR);
    red.add(mG);
    red.add(mB);

    Core.merge(red, mRed); // Return return red matrix

    //Apply Mat 
    mR = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);
    mG = lRgb.get(1);
    mB = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);

    green.add(mR);
    green.add(mG);
    green.add(mB);

    Core.merge(green, mGreen); //Return green matrix

    //Apply Mat 
    mR = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);
    mG = Mat.zeros(m.rows(), m.cols(), CvType.CV_8UC1);
    mB = lRgb.get(2);

    blue.add(mR);
    blue.add(mG);
    blue.add(mB);

    Core.merge(blue, mBlue); //Return blue matrix

你能帮我解决这些问题吗?

0 个答案:

没有答案