0

Androidカメラでランタイムに写真効果/フィルターを適用する方法を教えてください。JNI 、 OpenGl 、およびオープン CV を使用せずに。Java コードのみで効果を適用する必要があります。

4

2 に答える 2

1

ステップ 1. フレームを NV21 から一部の画像処理ライブラリでサポートされている形式に変換します。ここまたはここでその方法を読むことができます

ステップ 2. 画像処理ライブラリを使用してフィルタリングを実行します。たとえば、ImageJを使用できます。ImageJ の使用方法については、こちら、こちら、またはこちらご覧ください

于 2013-10-08T07:06:18.640 に答える
0

画像処理をチェックして、画像にさまざまな効果を適用します。キャプチャ後に画像に適用されるさまざまな効果を提供します。

画像にコントラスト効果を適用したい場合は、以下の方法を使用します。

public static Bitmap createContrast(Bitmap src, double value) {
    // image size
    int width = src.getWidth();
    int height = src.getHeight();
    // create output bitmap
    Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
    // color information
    int A, R, G, B;
    int pixel;
    // get contrast value
    double contrast = Math.pow((100 + value) / 100, 2);
        // scan through all pixels
    for(int x = 0; x < width; ++x) {
        for(int y = 0; y < height; ++y) {
            // get pixel color
            pixel = src.getPixel(x, y);
            A = Color.alpha(pixel);
            // apply filter contrast for every channel R, G, B
            R = Color.red(pixel);
            R = (int)(((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
            if(R < 0) { R = 0; }
            else if(R > 255) { R = 255; }
            G = Color.red(pixel);
            G = (int)(((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
            if(G < 0) { G = 0; }
            else if(G > 255) { G = 255; }
            B = Color.red(pixel);
            B = (int)(((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
            if(B < 0) { B = 0; }
            else if(B > 255) { B = 255; }
             // set new pixel color to output bitmap
            bmOut.setPixel(x, y, Color.argb(A, R, G, B));
        }
    }
    // return final image
    return bmOut;
}

上記の方法を次のように使用します。

    BitMap bmp =BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); //Here you can define your image and convert it into Bitmap.
      bmp = createContrast(bm,75);
  mImageView.setImageBitmap(bmp);
于 2013-10-08T06:58:56.933 に答える