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



我想调整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));

我想添加值来增加整个亮度。我希望最终的结果可以变成下面的照片。请给我一些帮助。谢谢你!

https://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);

然后像你已经做的那样合并频道

相关内容

  • 没有找到相关文章

最新更新