読者です 読者をやめる 読者になる 読者になる

OpenCV for Androidまとめ -ぼかし・ガンマ補正・マスク処理-

Android OpenCV java

OpenCV for Androidは資料が少ないので忘れないうちに簡単なのだけ雑にまとめておく。

環境


OpenCV Library 2.4.5
OpenCVの導入についてはこっちの記事で

ぼかし

ガウシアンフィルタ

なんかぼわーってするぼかし
8,6のあたりの値はなんだったか忘れた。

Imgproc.GaussianBlur(元画像(Mat), 出力画像(Mat), new Size(9, 9)(とか、ぼかす範囲), 8, 6);
メディアンフィルタ

ノイズ除去出来る。詳しくはこのへん

Imgproc.medianBlur(blur, blur, 7(どれくらいぼかすか。奇数));

ガンマ補正

    public synchronized Mat gammaFilter(Mat inputPicture, double gamma(定数)) {
    	Mat result = new Mat();
        inputPicture.copyTo(result);
    	    
        Mat lut = new Mat(1, 256, CvType.CV_8UC1);
        lut.setTo(new Scalar(0));

        for (int i = 0; i < 256; i++)
        {
        	lut.put(0, i, Math.pow((double)(1.0 * i/255), 1/r) * 255);
        }
    	
        Core.LUT(inputPicture, lut, result);
        return result;
    }

マスクを使った合成


マスク作って合成するときに使う。
img1img2maskをつかってimg3に合成したいとすると

         Core.bitwise_and(img1, mask, img1); //マスク部分のimg1を取り出してimg1に入れる
         Core.bitwise_not(mask, mask);//マスクを反転させる
         Core.bitwise_and(img2, mask, img2); //反転マスク部分のimg2を取り出してimg2にいれる
         Core.bitwise_or(img1, img2, img3);//img1とimg2を合成してimg3に入れる

img1,2,3とmaskは全部Mat.

まとめ


C++の読み替え方がわからないときはとりあえず
CoreImgproc. ってすれば
補完がでてくるからその辺を探す。

(OpenCV超初心者なので色々間違っているかもしれないです)