我想调整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);
然后像你已经做的那样合并频道