2016-08-17 4 views
2

mRgbaと呼ばれるopencvカメラのフレームの明るさを調整したいと思います。私はラボのチャンネルを分割した後。私はLチャンネルを調整したいと思いますが、Lチャンネルの値を変更する方法はわかりません。OpenCvはアンドロイドのチャンネルで値を分割して変更します

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)); 

明るさ全体を高めるために値を追加したいと思います。最終結果が次の写真になることを願っています。助けてください。ありがとうございました。

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

をそして、あなたはすでにやるようにチャンネルをマージ:

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

答えて

1

あなたはこのようにそれを行うことができます私たちはあなたが50

してLチャンネルを増やしたいとしましょう。

+0

ありがとうございました。私はまずそれを試してみる。私はもう1つの質問をしたい。 Android用opencvでガンマ補正(http://www.pyimagesearch.com/2015/10/05/opencv-gamma-correction/)を適用できますか?私は主なポイント私はアンドロイドで次の機能を適用する方法を知らないと思う。誰も私にいくつかの提案を与えることができますか? テーブル= np.array([((I/255.0)** invGamma)* np.arangeにおけるI 255 (0、256)])。astype( "UINT8") cv2.LUT(画像、テーブル) – ng2b30

+0

はい、あなたはそれを行うことができます。 [LUT関数](http://docs.opencv.org/java/2.4.2/org/opencv/core/Core.html#LUT)もAndroid用に用意されています。チュートリアルのpythonコードをJavaに翻訳しようとするだけです。 – Sunreef

+0

npはどうですか?これはどこから来たのですか? – ng2b30

関連する問題