-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How can I directly use the functions of RealSR without calling through the CLI? #68
Comments
I've buried hours into that problem and didn't find a working solution for retrieving the output bitmap in memory from NCNN's native environment to my app's Java/Kotlin environment. I eventually ended up :
Here's the Kotlin side of the JNI interface I made : https://github.com/avluis/Hentoid/blob/master/app/ai-upscale/src/main/java/me/devsaki/hentoid/ai_upscale/AiUpscaler.kt
If you find anything more elegant, I'd be super glad to know 🙃 |
@RobbWatershed Thank you, this helps me a lot! |
Calling functions directly with jni instead of writing to a file is difficult. |
Calling the function directly makes the code look better. I will try it out and will message back if I have a solution. Thank you. |
FYI, if that might be of any help, I've made my AI rescale module a standalone project : https://github.com/RobbWatershed/AI_Upscale |
Thank you! I was able to directly call the function with JNI without using the CLI. The next thing I’m working on is using GFPGAN or Codeformer for face enhancement on Android. Do you have any ideas or documentation for this? |
Nope, sorry. I'm more into drawn image enhancement. |
I tried creating a convert function in JNI (which calls the process function of RealSR) and used it in Kotlin. However, the output image after upscaling is just black. I would appreciate your advice on what might be going wrong.
JNIEXPORT jobject JNICALL Java_com_example_realsrandroid_ImageUpscale_convert( JNIEnv *env, jobject /* this */, jobject bitmapIn, jobject assetManager) { ncnn::Mat in_img = ncnn::Mat::from_android_bitmap(env, bitmapIn,ANDROID_BITMAP_FORMAT_RGBA_8888); ncnn::Mat out_img = ncnn::Mat(in_img.w * scale, in_img.h * scale, in_img.c, (size_t) in_img.elemsize, in_img.elempack); realsr.process(in_img, out_img); out_img.to_android_bitmap(env, bitmapIn, ANDROID_BITMAP_FORMAT_RGBA_8888); return bitmapIn; }
I have initialized RealSR on it.
realsr.scale = 4; realsr.tilesize = 200; realsr.prepadding = 10; AAssetManager *mgr = AAssetManager_fromJava(env, assetManager); realsr.load(mgr);
The text was updated successfully, but these errors were encountered: