Java 如何在android摄像头运行时应用照片效果/过滤器?

Java 如何在android摄像头运行时应用照片效果/过滤器?,java,android,Java,Android,请建议我如何在android摄像头运行时应用照片效果/过滤器?不需要使用JNI、OpenGl和OpenCV。我只需要通过Java代码应用效果。请查看以在图像上应用各种效果。它提供了在拍摄后应用于图像的各种效果 假设我想对图像应用对比度效果,那么我将使用以下方法: 第一步。将帧从NV21转换为某些图像处理库支持的格式。你可以阅读如何做,或者 第二步。使用图像处理库执行过滤。例如,您可以使用。您可以阅读有关如何使用ImageJ或。谢谢您的建议,我只想在运行时而不是在捕获图像后应用影响。是的,您可以使

请建议我如何在android摄像头运行时应用照片效果/过滤器?不需要使用JNI、OpenGl和OpenCV。我只需要通过Java代码应用效果。

请查看以在图像上应用各种效果。它提供了在拍摄后应用于图像的各种效果

假设我想对图像应用对比度效果,那么我将使用以下方法:


第一步。将帧从NV21转换为某些图像处理库支持的格式。你可以阅读如何做,或者


第二步。使用图像处理库执行过滤。例如,您可以使用。您可以阅读有关如何使用ImageJ或。

谢谢您的建议,我只想在运行时而不是在捕获图像后应用影响。是的,您可以使用链接中提供的代码来执行此操作。拍摄后,您可以在
ImageView
中设置图像,并通过为给定链接中可用的不同效果创建方法对其应用效果。AFAIK您不能在图像上应用效果运行时。您必须先捕获图像,然后才能应用效果。@GrlsHu我们可以使用JNI和open CV来实现。但是Srinoid询问如何使用Java@android_dev是的,我知道我们可以使用JNI和openCV来实现,但是Srinoid会询问,而不使用这个库,这就是我提供这个解决方案的原因。
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);