Opencv 在 android 中拆分并更改该通道中的值

Opencv split and change value in that channel in android

我想在opencv相机中调整帧的亮度,称为mRgba。在我拆分实验室频道后。我希望调整L通道,但我不知道如何改变L通道中的值。

   Mat lab_image  = new Mat();
   //mRgba is the frame which shows in the camera
    Imgproc.cvtColor(mRgba, lab_image, Imgproc.COLOR_mRGBA2RGBA);
    Imgproc.cvtColor(lab_image, lab_image, Imgproc.COLOR_RGBA2RGB);
    Imgproc.cvtColor(lab_image, lab_image, Imgproc.COLOR_RGB2Lab);

    // Extract the L channel
    List<Mat> lab_list = new ArrayList(3);
    Core.split(lab_image,lab_list);

    //lab_list.get(0).copyTo(mRgba);

    Mat result_image = new Mat();
    Core.merge(lab_list,result_image);

    Imgproc.cvtColor(result_image, mRgba, Imgproc.COLOR_Lab2RGB);
    Imgproc.cvtColor(mRgba, mRgba, Imgproc.COLOR_RGB2RGBA);
    Imgproc.cvtColor(mRgba, mRgba, Imgproc.COLOR_RGBA2mRGBA);

我尝试使用 setTo() 来设置颜色,但它改变了整个颜色。

lab_list.get(0).setTo(new Scalar(255,255,255,0.1));

我要加值加整brightness.I希望最后的效果能变成下面的照片。请给我一些帮助。谢谢你。

http://i.stack.imgur.com/dSr4L.png

假设您想将 L 通道增加 50。

你可以这样做:

Mat dst = new Mat();
Core.add(lab_list.get(0), Scalar(50), dst);
lab_list.set(0, dst);

然后像您一样合并频道。