ImageBlurDetection.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // Created by 阳坤 on 2022/2/23.
  3. //
  4. #include "ImageBlurDetection.h"
  5. static jint Java_JNI_OpenCV_ImagePathBlurDetection(JNIEnv *env, jobject obj, jstring filepath) {
  6. const char *image_path = env->GetStringUTFChars(filepath, 0);
  7. int ret = image_blur_detection(image_path);
  8. env->ReleaseStringUTFChars(filepath, image_path);
  9. return ret;
  10. }
  11. static jstring Java_JNI_OpenCV_GetVideoSimilarityLists(JNIEnv *env, jobject obj, jstring filepath) {
  12. LOGE("Java_JNI_OpenCV_GetVideoSimilarityLists\n ");
  13. const char *image_path = env->GetStringUTFChars(filepath, 0);
  14. const char *ret_json = get_video_similarity_list(image_path);
  15. env->ReleaseStringUTFChars(filepath, image_path);
  16. LOGE("Java_JNI_OpenCV_GetVideoSimilarityLists\n");
  17. if (ret_json) {
  18. LOGE("Java_JNI_OpenCV_GetVideoSimilarityLists NewStringUTF \n");
  19. jstring str = env->NewStringUTF(ret_json);
  20. LOGE("Java_JNI_OpenCV_GetVideoSimilarityLists NewStringUTF 1\n");
  21. free((void *) ret_json);
  22. LOGE("Java_JNI_OpenCV_GetVideoSimilarityLists NewStringUTF out\n");
  23. ret_json = NULL;
  24. return str;
  25. }
  26. return NULL;
  27. }
  28. static jint
  29. Java_JNI_OpenCV_ImageBytesBlurDetection(JNIEnv *env, jobject obj, jbyteArray data) {
  30. jbyte *image_bytes = env->GetByteArrayElements(data, 0);
  31. int ret = bytes_blur_detection((uint8_t *) image_bytes, env->GetArrayLength(data));
  32. env->ReleaseByteArrayElements(data, image_bytes, 0);
  33. return ret;
  34. }
  35. static const JNINativeMethod configMethods[] = {
  36. {"blurDetectionFromImagePath", "(Ljava/lang/String;)I", (void **) Java_JNI_OpenCV_ImagePathBlurDetection},
  37. {"blurDetectionFromImageBytes", "([B)I", (void **) Java_JNI_OpenCV_ImageBytesBlurDetection},
  38. {"getVideoSimilarityLists", "(Ljava/lang/String;)Ljava/lang/String;", (void **) Java_JNI_OpenCV_GetVideoSimilarityLists},
  39. };
  40. /**
  41. * System.load(xxx.so) ִ
  42. * @param vm
  43. * @param pVoid
  44. * @return
  45. */
  46. int JNI_OnLoad(JavaVM *vm, void *pVoid) {
  47. JNIEnv *jniEnv;
  48. if (vm->GetEnv(reinterpret_cast<void **>(&jniEnv), JNI_VERSION_1_6) != JNI_OK) {
  49. printf(" JNI_OnLoad 1 error.\n");
  50. return JNI_ERR;
  51. }
  52. jclass jcls = jniEnv->FindClass(JAVA_JNI_CLASS_PATH);
  53. if (jniEnv->RegisterNatives(jcls, configMethods, NELEM(configMethods)) != JNI_OK) {
  54. printf(" JNI_OnLoad error.\n");
  55. return JNI_ERR;
  56. }
  57. printf(" JNI_OnLoad ok.\n");
  58. return JNI_VERSION_1_6;
  59. };