Giter Site home page Giter Site logo

jenly1314 / wechatqrcode Goto Github PK

View Code? Open in Web Editor NEW
599.0 9.0 119.0 534 MB

⛄ 基于OpenCV开源的微信二维码引擎移植的二维码扫码识别库

Home Page: https://jenly1314.github.io/WeChatQRCode/

License: Apache License 2.0

Kotlin 0.24% Java 28.64% CMake 1.41% C++ 66.20% Makefile 0.04% C 3.38% Objective-C 0.08% Shell 0.01%
wechat-qrcode wechatqrcode qrcode opencv-android qr-code opencv android

wechatqrcode's Introduction

WeChatQRCode

Download MavenCentral JitPack CI CircleCI API License

WeChatQRCode 一个基于OpenCV开源的微信二维码引擎移植封装的二维码识别库。

又一个扫码相关的轮子,之所以说又,是因为这样的轮子已经开源三个了;几个轮子之间的优缺点,各有千秋,请自寻选择(小孩子才做选择)。

基于ZXing的扫码轮子 ZXingLite

基于MLKit的扫码轮子 MLKit

基于OpenCV的扫码轮子 WeChatQRCode

GIF 展示

GIF

你可以直接下载 演示App 体验效果

各Module相关说明

示例App:主要用于提供WeChatQRCode的演示效果

OpenCV:编译好的OpenCV

OpenCV:armeabi-v7a 的libopencv_java4.so

OpenCV:arm64-v8a 的libopencv_java4.so

OpenCV:x86 的libopencv_java4.so

OpenCV:x86_64 的libopencv_java4.so

OpenCV二维码识别:封装好的API,通过 OpenCVQRCodeDetector 你可以很轻松的拥有OpenCV中开源的二维码识别功能

OpenCV二维码扫码:有了上面的OpenCV二维码识别功能,基本的扫码相关界面还是需要有个的,扫码加识别完美搭配;

opencv-qrcode-scanning 相当于CameraScan的衍生库。

微信二维码识别:封装好的API,通过 WeChatQRCodeDetector 你可以很轻松的拥有OpenCV中开源的微信二维码识别功能

微信二维码扫码:有了上面的微信二维码识别功能,基本的扫码相关界面还是需要有个的,扫码加识别完美搭配;

wechat-qrcode-scanning 相当于CameraScan的衍生库。

引入

Gradle:

  1. 在Project的 build.gradlesetting.gradle 中添加远程仓库

    repositories {
        //...
        mavenCentral()
    }
  2. 在Module的 build.gradle 里面添加引入依赖项

    // OpenCV基础库(*必须)
    implementation 'com.github.jenly1314.WeChatQRCode:opencv:2.2.0'
    
    // OpenCV的ABI(可选),根据你的需要选择想要支持的SO库架构(至少选一个)
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv7a:2.2.0'
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv64:2.2.0'
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86:2.2.0'
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86_64:2.2.0'
    
    // OpenCV二维码识别功能(可选)
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-qrcode:2.2.0'
    // OpenCV二维码扫码功能(可选)
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-qrcode-scanning:2.2.0'
    
    // 微信二维码识别功能(可选)
    implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode:2.2.0'
    // 微信二维码扫码功能(可选)
    implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode-scanning:2.2.0'
    

温馨提示

关于WeChatQRCode版本与编译的SDK版本要求

使用 v2.1.x 以上版本时,要求 compileSdkVersion >= 34

使用 v2.0.x 以上版本时,要求 compileSdkVersion >= 33

如果 compileSdkVersion < 33 请使用 v1.x版本

ABI过滤

在Module的 build.gradle 里面的 android{} 中设置支持的 SO 库架构(可选,支持多个平台的 so, 支持的平台越多,APK体积越大)

 defaultConfig {

     //...

     ndk {
         //设置支持的 SO 库架构(开发者可以根据需要,选择一个或多个平台的 so)
         abiFilters 'armeabi-v7a' // , 'arm64-v8a', 'x86', 'x86_64'
     }
 }

使用

初始化

初始化 OpenCVWeChatQRCodeDetector (建议在 MainActivityonCreate 方法中进行初始化)

初始化OpenCV

使用版本 >= v2.1.0时,初始化OpenCV方式

//初始化OpenCV
OpenCV.initOpenCV()

使用版本 < v2.1.0时,初始化OpenCV方式

//初始化OpenCV
OpenCV.initAsync(context)

初始化WeChatQRCodeDetector

在初始化OpenCV后,就可以立即初始化WeChatQRCodeDetector了。

//初始化WeChatQRCodeDetector
WeChatQRCodeDetector.init(context)

识别二维码

WeChat QRCode

识别二维码 ( wechat-qrcode 中的WeChatQRCodeDetector)

//识别二维码;results是一个List<String>集合,可能会有多个结果,如果只识别一个码,可以取List中第0个就可以
val results = WeChatQRCodeDetector.detectAndDecode(bitmap)

识别二维码并返回二维码位置信息 ( wechat-qrcode 中的WeChatQRCodeDetector)

// 检测结果:二维码的位置信息
val points = ArrayList<Mat>()
//通过WeChatQRCodeDetector识别图片中的二维码并返回二维码的位置信息
val result = WeChatQRCodeDetector.detectAndDecode(bitmap, points)
points.forEach { mat ->
  // 扫码结果二维码的四个点(一个矩形)
  Log.d(TAG, "point0: ${mat[0, 0][0]}, ${mat[0, 1][0]}")
  Log.d(TAG, "point1: ${mat[1, 0][0]}, ${mat[1, 1][0]}")
  Log.d(TAG, "point2: ${mat[2, 0][0]}, ${mat[2, 1][0]}")
  Log.d(TAG, "point3: ${mat[3, 0][0]}, ${mat[3, 1][0]}")
}

OpenCV QRCode

识别二维码 ( opencv-qrcode 中的OpenCVQRCodeDetector)

val openCVQRCodeDetector = OpenCVQRCodeDetector()
//识别二维码
val results = openCVQRCodeDetector.detectAndDecode(bitmap)

识别二维码并返回二维码位置信息 ( opencv-qrcode 中的OpenCVQRCodeDetector)

// 检测结果:二维码的位置信息
val points = Mat()
//通过WeChatQRCodeDetector识别图片中的二维码并返回二维码的位置信息
val result = openCVQRCodeDetector.detectAndDecode(bitmap, points)
// 扫码结果二维码的四个点(一个四边形);需要注意的是:OpenCVQRCode识别的二维码和WeChatQRCode的识别的二维码记录在Mat中的点位方式是不一样的
Log.d(TAG, "point0: ${points[0, 0][0]}, ${points[0, 0][1]}")
Log.d(TAG, "point1: ${points[0, 1][0]}, ${points[0, 1][1]}")
Log.d(TAG, "point2: ${points[0, 2][0]}, ${points[0, 2][1]}")
Log.d(TAG, "point3: ${points[0, 3][0]}, ${points[0, 3][1]}")

完整示例

通过继承 wechat-qrcode-scanning 中的 WeChatCameraScanActivity或者WeChatCameraScanFragment可以很轻松的实现扫码功能

class WeChatQRCodeActivity : WeChatCameraScanActivity() {

    override fun onScanResultCallback(result: AnalyzeResult<List<String>>) {
        if (result.result.isNotEmpty()) {
            // 停止分析
            cameraScan.setAnalyzeImage(false)
            Log.d(TAG, result.result.toString())
            // 当初始化 WeChatScanningAnalyzer 时,如果是需要二维码的位置信息,则可通过 WeChatScanningAnalyzer.QRCodeAnalyzeResult 获取
            if (result is WeChatScanningAnalyzer.QRCodeAnalyzeResult) { // 如果需要处理结果二维码的位置信息

                val buffer = StringBuilder()
                val bitmap = result.bitmap?.drawRect { canvas, paint ->
                    // 扫码结果可能有多个
                    for ((index, data) in result.result.withIndex()) {
                        buffer.append("[$index] ").append(data).append("\n")
                        result.points?.forEach { mat ->
                            // 扫码结果二维码的四个点
                            Log.d(TAG, "point0: ${mat[0, 0][0]}, ${mat[0, 1][0]}")
                            Log.d(TAG, "point1: ${mat[1, 0][0]}, ${mat[1, 1][0]}")
                            Log.d(TAG, "point2: ${mat[2, 0][0]}, ${mat[2, 1][0]}")
                            Log.d(TAG, "point3: ${mat[3, 0][0]}, ${mat[3, 1][0]}")

                            val path = Path()
                            path.moveTo(mat[0, 0][0].toFloat(), mat[0, 1][0].toFloat())
                            path.lineTo(mat[1, 0][0].toFloat(), mat[1, 1][0].toFloat())
                            path.lineTo(mat[2, 0][0].toFloat(), mat[2, 1][0].toFloat())
                            path.lineTo(mat[3, 0][0].toFloat(), mat[3, 1][0].toFloat())
                            path.lineTo(mat[0, 0][0].toFloat(), mat[0, 1][0].toFloat())
                            // 将二维码位置在图片上框出来
                            canvas.drawPath(path, paint)
                        }
                    }
                }

                val config = AppDialogConfig(this, R.layout.qrcode_result_dialog).apply {
                    content = buffer
                    onClickConfirm = View.OnClickListener {
                        AppDialog.INSTANCE.dismissDialog()
                        // 继续扫码分析
                        cameraScan.setAnalyzeImage(true)
                    }
                    onClickCancel = View.OnClickListener {
                        AppDialog.INSTANCE.dismissDialog()
                        finish()
                    }
                    val imageView = getView<ImageView>(R.id.ivDialogContent)
                    imageView.setImageBitmap(bitmap)
                }
                AppDialog.INSTANCE.showDialog(config, false)

            } else {
                // 一般需求都是识别一个码,所以这里取第0个就可以;有识别多个码的需求,可以取全部
                val text = result.result[0]
                val intent = Intent()
                intent.putExtra(CameraScan.SCAN_RESULT, text)
                setResult(RESULT_OK, intent)
                finish()
            }

        }
    }

    override fun createAnalyzer(): Analyzer<MutableList<String>>? {
        // 分析器默认不会返回结果二维码的位置信息
//        return WeChatScanningAnalyzer()
        // 如果需要返回结果二维码位置信息,则初始化分析器时,参数传 true 即可
        return WeChatScanningAnalyzer(true)
    }

    companion object {
        const val TAG = "WeChatQRCodeActivity"
    }

}

更多完整示例如下:

wechat-qrcode-scanning

扫描识别二维码实现示例:通过直接继承 WeChatCameraScanActivity 实现的示例 WeChatQRCodeActivity

扫描识别多个二维码实现示例:通过直接继承 WeChatCameraScanActivity 实现的示例 WeChatMultiQRCodeActivity

opencv-qrcode-scanning

扫描识别二维码实现示例:通过直接继承 OpenCVCameraScanActivity 实现的示例 OpenCVQRCodeActivity

版本变化说明

从2.0.0版本开始 wechat-qrcode-scanningopencv-qrcode-scanning 都是以CameraScan作为基础库去实现具体的分析检测功能,所以关于 CameraScan 的使用和自定义扫码界面布局都完全遵循CameraScan 的使用方式。

关于 CameraScan 的使用,你可以直接去看CameraScan的使用说明;

关于扫描框动画,你可以查看ViewfinderView的使用说明;

2.x版本的变化

1.x2.x 主要变化如下:

  • 1.x版本中 wechat-qrcode-scanningopencv-qrcode-scanning 默认依赖的 mlkit-camera-core 被移除了;

从2.0.0版本开始 wechat-qrcode-scanningopencv-qrcode-scanning 都改为依赖CameraScan;(CameraScan是一个独立的库,单独进行维护)

从2.0.0版本开始 wechat-qrcode-scanningopencv-qrcode-scanning 都已默认依赖ViewfinderView

从2.0.0版本开始 OpenCVCameraScanActivityWeChatCameraScanActivity 默认布局包含了扫描动画 ViewfinderView 和手电筒按钮,集成步骤更简单。

基于以上两点主要差异:2.x的主要使用方式和1.x基本类似,部分细节有所变更。

如果你是从 1.x 版本升级至 2.x 版本,那么你需要知道上面所说的差异;特别是独立出去单独维护的库,其包名都有所变化,这一点需要注意一下,大部分变动只需变更导入的包名即可完成升级。

如果你使用的是1.x版本的话请直接查看v1.x分支版本

2.x版本的使用

2.x版本的实现主要是以CameraScan作为基础库去实现具体的分析检测功能,所以你可以直接去看CameraScan的使用说明,只要知道了CameraScan的基本使用方式,自然就会使用 wechat-qrcode-scanningopencv-qrcode-scanning 了。

二维码扫码识别

下面就列一下 opencv-qrcode-scanningwechat-qrcode-scanning 实现扫二维码功能的核心类;主要包括实现扫描二维码的 Analyzer 和便于快速实现扫描检测的 BaseCameraScanActivityBaseCameraScanFragment 的子类。

功能 所属子模块 对应的Analyzer实现 对应的BaseCameraScanActivity子类
二维码扫码识别 opencv-qrcode-scanning OpenCVScanningAnalyzer OpenCVCameraScanActivity/OpenCVCameraScanFragment
二维码扫码识别 wechat-qrcode-scanning WeChatScanningAnalyzer WeChatCameraScanActivity/WeChatCameraScanFragment

更多使用详情,请查看app中的源码使用示例或直接查看 API帮助文档

其他

opencv-qrcode与wechat-qrcode检测识别二维码对比

opencv-qrcode

  • 一次识别单个二维码速度一般;(一次识别多个二维码时有点小问题)
  • 二维码检测的位置信息是一个四边形。

wechat-qrcode

  • 一次能识别多个二维码,识别速度更快;
  • 二维码检测的位置信息是一个矩形。

总结成一句话来说就是:wechat-qrcode 识别速度更快,opencv-qrcode 二维码定位更准。

就目前而言:wechat-qrcode 的优势基本秒杀 opencv-qrcode

以上观点纯属个人测试总结得出;随着版本的迭代,不保证观点与事实的一致性。你也可以直接下载 演示App进行测试比对。

相关推荐

MLKit 一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。

ZXingLite 基于zxing实现的扫码库,优化扫码和生成二维码/条形码功能。

CameraScan 一个简化扫描识别流程的通用基础库。

ViewfinderView ViewfinderView一个取景视图:主要用于渲染扫描相关的动画效果。

版本日志

v2.2.0:2024-7-12

  • 更新CameraScan至v1.2.0
  • 更新ViewfinderView至v1.2.0
  • 使用LogX 来统一管理日志
  • 优化一些细节

v2.1.0:2024-1-13

  • 更新OpenCV至v4.9.0
  • 更新CameraScan至v1.1.0
  • 更新compileSdkVersion至34
  • 更新Gradle至v8.0

v2.0.1:2023-9-13

  • 更新CameraScan至v1.0.1
  • 更新ViewfinderView至v1.1.0

v2.0.0:2023-8-14

  • wechat-qrcode-scanning和opencv-qrcode-scanning中移除原依赖(mlkit-camera-core),现改为依赖CameraScan
  • wechat-qrcode-scanning和opencv-qrcode-scanning添加默认依赖ViewfinderView
  • 优化扫描分析过程的性能体验(优化帧数据分析过程)

v1.3.0:2023-4-16

  • 新增OpenCV二维码扫码识别库(opencv-qrcode和opencv-qrcode-scanning)
  • 更新mlkit-camera-core至v1.4.0
  • 更新compileSdkVersion至33
  • 更新Gradle至v7.5

赞赏

如果您喜欢WeChatQRCode,或感觉WeChatQRCode帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃

您也可以扫描下面的二维码,请作者喝杯咖啡 ☕

关于我

我的博客 GitHub Gitee CSDN 博客园
Jenly's Blog jenly1314 jenly1314 jenly121 jenly

联系我

微信公众号 Gmail邮箱 QQ邮箱 QQ群 QQ群
Jenly666 jenly1314 jenly1314 20867961 64020761

wechatqrcode's People

Contributors

jenly1314 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wechatqrcode's Issues

win10 系统上正常加载了libopencv_java455.dll 但是 new WeChatQRCode()org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_4()J

八月 16, 2023 2:05:51 下午 com.zk.qrcode.OpenCV initOpenCV
信息: os.name = windows 10
八月 16, 2023 2:05:51 下午 com.zk.qrcode.OpenCV initOpenCV
信息: Successfully loaded OpenCV native library.
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_4()J
at org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_4(Native Method)
at org.opencv.wechat_qrcode.WeChatQRCode.(WeChatQRCode.java:90)
at com.zk.qrcode.WeChatQRCodeDetector.initWeChatQRCode(WeChatQRCodeDetector.java:55)
at com.zk.qrcode.WeChatQRCodeDetector.init(WeChatQRCodeDetector.java:37)
at com.zk.qrcode.WeChatQRCodeDetector.init(WeChatQRCodeDetector.java:27)
at com.zk.qrcode.QrcodeDemo.main(QrcodeDemo.java:12)

Process finished with exit code 1

扫码Crash,是什么原因呢

CvException [org.opencv.core.CvException: OpenCV(4.6.0) /home/king/work/opencv/opencv-4.6.0/modules/core/src/alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 1228800 bytes in function 'OutOfMemoryError'
]

开放的api有点少

扫描速度是没的说的,但是开放的api感觉有点少,比如识别到二维码的坐标位置,二维码在屏幕中的大小之类的,要做镜头的自动放大缩小但是获取不到这些数据感觉也有点难搞 或许是我没找到? zxing中是会返回这些数据或者根据数据自己计算出来 只是建议

WechatQR Crashes

App getting crash when i scan below Qrcode

154214713-46bc2c08-739e-497a-99f3-1fcda027a977

2022-03-30 19:08:41.975 24007-26123/com.king.wechat.qrcode.app A/chat.qrcode.ap: java_vm_ext.cc:578] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0x82
java_vm_ext.cc:578] string: 'This is a Test ��f'
java_vm_ext.cc:578] input: '0x54 0x68 0x69 0x73 0x20 0x69 0x73 0x20 0x61 0x20 0x54 0x65 0x73 0x74 0x20 <0x82> 0xf1 0x8b 0x66'
java_vm_ext.cc:578] in call to NewStringUTF
java_vm_ext.cc:578] from java.util.List org.opencv.wechat_qrcode.WeChatQRCode.detectAndDecode_1(long, long)

@jenly1314

无法开启闪光灯

您好,麻烦问下。
无法开启闪光灯,是因为这个库占用了么?
报错: Torch for camera "0" is not available due to an existing camera user

Mat img_mat = imread(....)输入图片流的问题

Mat img_mat = imread(....)不支持中文,有没有什么方法输入图片流
网上的方法大多是针对 org.opencv.core.Mat 的

有没有办法 将 InputStream 转为 org.bytedeco.opencv.opencv_core.Mat

Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10方法未实现

电脑:win10
手机:小米13 高通骁龙8 Gen2
logcat:
No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?

2024-02-20 16:50:38.920 9745-9745 AndroidRuntime com.tencent.yolov5ncnn D Shutting down VM
2024-02-20 16:50:38.922 9745-9745 AndroidRuntime com.tencent.yolov5ncnn E FATAL EXCEPTION: main
Process: com.tencent.yolov5ncnn, PID: 9745
java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
at org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(Native Method)
at org.opencv.wechat_qrcode.WeChatQRCode.(WeChatQRCode.java:44)
at com.king.wechat.qrcode.WeChatQRCodeDetector.initWeChatQRCode(WeChatQRCodeDetector.java:87)
at com.king.wechat.qrcode.WeChatQRCodeDetector.init(WeChatQRCodeDetector.java:45)
at com.tencent.yolov5ncnn.MainActivity.onCreate(MainActivity.java:97)
at android.app.Activity.performCreate(Activity.java:8891)
at android.app.Activity.performCreate(Activity.java:8856)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1468)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3969)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4140)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:99)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2585)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:224)
at android.os.Looper.loop(Looper.java:318)
at android.app.ActivityThread.main(ActivityThread.java:8744)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
2024-02-20 16:50:38.923 9745-9745 cent.yolov5ncnn com.tencent.yolov5ncnn W type=1400 audit(0.0:544615): avc: denied { search } for name="miuilog" dev="dm-51" ino=427 scontext=u:r:untrusted_app_29:s0:c95,c257,c512,c768 tcontext=u:object_r:data_log_file:s0 tclass=dir permissive=0 app=com.tencent.yolov5ncnn
2024-02-20 16:50:38.926 9745-9745 ScoutUtils com.tencent.yolov5ncnn W Failed to mkdir /data/miuilog/stability/memleak/heapdump/
2024-02-20 16:50:38.941 9745-9745 Process com.tencent.yolov5ncnn I Process is going to kill itself!
java.lang.Exception
at android.os.Process.killProcess(Process.java:1356)
at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:174)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1071)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1066)
at java.lang.Thread.dispatchUncaughtException(Thread.java:2306)
2024-02-20 16:50:38.941 9745-9745 Process com.tencent.yolov5ncnn I Sending signal. PID: 9745 SIG: 9

app的build.gradle文件

//应用 Android 应用程序插件,表示这个项目是一个 Android 应用程序。
apply plugin: 'com.android.application'

android {
compileSdk 34
//指定应用程序编译的 SDK 版本。
buildToolsVersion "29.0.2" //指定要使用的 Android 构建工具的版本。

//这个块包含应用程序的默认配置设置。
defaultConfig {
    applicationId "com.tencent.yolov5ncnn"  //指定应用程序的唯一应用程序 ID。
    archivesBaseName = "$applicationId"     //设置生成的构建存档的基本名称。
    //这个块配置原生开发工具包(NDK)的设置。
    ndk {
        moduleName "ncnn"  //指定使用 NDK 编译的模块的名称
        abiFilters "armeabi-v7a", "arm64-v8a"   //指定在构建中包含的 ABI(应用程序二进制接口)。
    }
    minSdkVersion 29    //指定运行应用程序所需的最低 Android API 级别。

    externalNativeBuild { //这个块配置了外部本地构建系统的设置。
        cmake { //指定使用 CMake 进行本地代码构建。
            arguments "-DANDROID_TOOLCHAIN=clang"  //指定了使用 clang 工具链进行构建
            //指定了 C 和 C++ 编译器的编译选项。
            cFlags "-fopenmp -O2 -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
            cppFlags "-fopenmp -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
            arguments "-DANDROID_STL=c++_shared", "-DANDROID_CPP_FEATURES=rtti exceptions"
            //指定了 STL 库和 C++ 特性的选项。
            cppFlags "-fexceptions"
            cppFlags "-std=c++11 -fopenmp -static-openmp"
            //cppFlags "-fstatic-openmp"
            //abiFilters 'armeabi-v7a', 'arm64-v8a'//,'x86_64' 'x86' , //指定了要构建的 ABI(应用程序二进制接口)。
        }
    }
}
//这个块定义了构建类型
buildTypes {
    //指定了 release 构建类型的配置。
    release {
        minifyEnabled false //指定是否启用代码混淆。
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        //指定了 ProGuard 配置文件。
    }
}
//这个块配置外部原生构建系统的设置。
externalNativeBuild {
    cmake {
        version "3.10.2"
        path file('src/main/jni/CMakeLists.txt')
    }
}


//这个块配置了 Lint 工具的选项。
lintOptions {
    abortOnError false  //指定是否在遇到 Lint 错误时中止构建。
    checkReleaseBuilds false  //指定是否在发布版本中进行 Lint 检查。
    disable 'MissingTranslation'
    //禁用了 "MissingTranslation" 错误。 防止在发布的时候出现因MissingTranslation导致Build Failed!

}
ndkVersion '21.0.6113669' //指定了使用的 NDK 版本。

}

dependencies {
//vlc播放器的相关依赖
implementation fileTree(include: ['.jar'], dir: 'libs')
//implementation fileTree(include: ['
.jar'], dir: 'lib')
implementation files('libs/libvlc-all-3.3.0-eap17.aar')
//androidx依赖
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
//摄像头控制依赖
implementation files('libs/camerautil.jar')
implementation 'androidx.exifinterface:exifinterface:1.3.7'
//车牌识别相关依赖
implementation 'com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3'
//二维码识别相关库

implementation 'com.github.jenly1314.WeChatQRCode:opencv:2.1.0'
implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv7a:2.1.0'
implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv64:2.1.0'

// 微信二维码识别功能(可选)
implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode:2.1.0'
//implementation 'org.opencv:opencv-android:4.5.4'

// // OpenCV基础库(*必须)
// implementation 'com.github.jenly1314.WeChatQRCode:opencv:2.1.0'
//
//// 微信二维码识别功能(可选)
// implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode:2.1.0'
//
//// 微信二维码扫码功能(可选)
// implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode-scanning:2.1.0'
////MLKit的Camera核心库(可选),如果您使用了wechat-qrcode-scanning,则必须依赖mlkit-camera-core库
// implementation 'com.github.jenly1314.MLKit:mlkit-camera-core:1.0.1'

//无关依赖(后续考虑删除)
testImplementation 'junit:junit:4.13.2'
implementation 'com.github.bumptech.glide:glide:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

}

Size app increment 50MB

When i apply lib openCV of you into app, Size app increment 50M. So, app release of you have 12MB. Can you explain for me about this

和Linphone项目的libc++_shared.so文件冲突

2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:

  • C:\Users\lante.gradle\caches\transforms-3\d34c9e1235017dc17697b3298e6461e9\transformed\jetified-opencv-1.3.0\jni\arm64-v8a\libc++_shared.so
  • C:\Users\lante.gradle\caches\transforms-3\bd0535683786c3682061e179655a41c1\transformed\jetified-linphone-sdk-android-debug-5.2.38\jni\arm64-v8a\libc++_shared.so
  • 两个文件都是必须的 反正都会引起崩溃 如何解决

怎么通过返回的二维码各个顶点定位位置啊?

扫描返回的结果{"points":[{"nativeObj":542547384896},{"nativeObj":538574786560}],"bitmap":{"mHeight":640,"mNativePtr":540016003392,"mWidth":480},"result":["https://cloud.tencent.com/weappAuthLogin?token\xxxxxx","http://weixin.qq.com/x/xxxxxx"]} 这个points返回的结果是Mat类型 需要怎么转成坐标呢?

WeChatQRCodeDetector中的空指针问题

private static String getExternalFilesDir(Context context,String path) {
        File[] files = context.getExternalFilesDirs(path);
        if(files!=null && files.length > 0){
            return files[0].getAbsolutePath();
        }
        return context.getExternalFilesDir(path).getAbsolutePath();

    }

其中files[0]可能为空,建议修复一下

识别图片二维码崩溃

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x78aabeb000
x0 0000000000000991 x1 0000000000000863 x2 00000000000006ea x3 00000078a4c042a4
x4 0000000000000001 x5 00000078b5502153 x6 00000000000009b9 x7 0000000000000001
x8 00000078a4e00000 x9 00000000086506e9 x10 000000000177ac01 x11 000000000177ac00
x12 00000078b4400000 x13 00000078a6600000 x14 0000000000000002 x15 000000000177abff
x16 000000000071d39c x17 0000000000503b13 x18 00000078b65f0000 x19 0000007b97f854c0
x20 0000000000000865 x21 000000000050551e x22 00000000000006ea x23 000000000071d39b
x24 00000000000006e9 x25 0000000000000004 x26 0000007972ebc928 x27 0000000000000865
x28 00000000000006e9 x29 0000007ba1c4ff00
sp 0000007ba1c4fe90 lr 0000007972623490 pc 00000079726234f0

backtrace:
#00 pc 00000000008a04f0 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#1 pc 00000000008a035c /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#2 pc 00000000008b082c /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#3 pc 00000000008a8a88 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#4 pc 00000000008d4e50 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#5 pc 00000000008d495c /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#6 pc 00000000008869dc /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#7 pc 0000000000886544 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so
#8 pc 0000000000889ac0 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so (ZN2cv13wechat_qrcode12WeChatQRCode4Impl6decodeERKNS_3MatERNSt6__ndk16vectorIS3_NS6_9allocatorIS3_EEEESB+524)
#9 pc 0000000000889388 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so (_ZN2cv13wechat_qrcode12WeChatQRCode15detectAndDecodeERKNS_11_InputArrayERKNS_12_OutputArrayE+348)
#10 pc 000000000023e320 /data/data/com.lianjia.alliance/app_p_n/636038542/libopencv_java4.so (Java_org_opencv_wechat_1qrcode_WeChatQRCode_detectAndDecode_11+80)
#11 pc 0000000000150354 /apex/com.android.runtime/lib64/libart.so
#12 pc 00000000001475bc /apex/com.android.runtime/lib64/libart.so
#13 pc 00000000001561d8 /apex/com.android.runtime/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+288)
#14 pc 00000000002fd904 /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPNS_11ShadowFrameEtPNS_6JValueE+388)
#15 pc 00000000002f8bd4 /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+916)
#16 pc 00000000005ce120 /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+372)
#17 pc 0000000000141998 /apex/com.android.runtime/lib64/libart.so
#18 pc 00000000005cb878 /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtual+1436)
#19 pc 0000000000141818 /apex/com.android.runtime/lib64/libart.so
#20 pc 00000000005ce420 /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1140)
#21 pc 0000000000141998 /apex/com.android.runtime/lib64/libart.so
#22 pc 00000000005ce420 /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1140)
#23 pc 0000000000141998 /apex/com.android.runtime/lib64/libart.so
#24 pc 00000000005ce420 /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1140)
#25 pc 0000000000141998 /apex/com.android.runtime/lib64/libart.so
#26 pc 00000000002ce230 /apex/com.android.runtime/lib64/libart.so
#27 pc 00000000005bc0a8 /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1016)
#28 pc 000000000015046c /apex/com.android.runtime/lib64/libart.so
#29 pc 00000000001475bc /apex/com.android.runtime/lib64/libart.so
#30 pc 00000000001561d8 /apex/com.android.runtime/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+288)
#31 pc 00000000004d8838 /apex/com.android.runtime/lib64/libart.so
#32 pc 00000000004da260 /apex/com.android.runtime/lib64/libart.so (_ZN3art12InvokeMethodERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectS4_S4_m+1480)
#33 pc 0000000000464144 /apex/com.android.runtime/lib64/libart.so
#34 pc 00000000000f8c38 /system/framework/arm64/boot.oat

demo闪退 No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2)

#47 相同的报错 但我是将Release2.1.0下载下来后在Android Studio 中编译安装的,demo一打开就闪退
电脑 win10
手机 vivo iQOO NEO 855版 安卓11

识别图片二维码崩溃

CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.6.0) /home/king/work/opencv/opencv-4.6.0/modules/core/src/matrix_wrap.cpp:2039: error: (-215:Assertion failed) this_v.size() == v.size() in function 'assign'
]
    at org.opencv.wechat_qrcode.WeChatQRCode.detectAndDecode_1(Native Method)
    at org.opencv.wechat_qrcode.WeChatQRCode.detectAndDecode(WeChatQRCode.java:124)
    at com.king.wechat.qrcode.WeChatQRCodeDetector.detectAndDecode(WeChatQRCodeDetector.java:150)
    at com.king.wechat.qrcode.WeChatQRCodeDetector.detectAndDecode(WeChatQRCodeDetector.java:123)
    at WeChatQRCodeActivity$initCameraScan$1$1$1$onResourceReady$1$result$1.invokeSuspend(WeChatQRCodeActivity.kt:71)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@39b1097, Dispatchers.Main.immediate]

更新依赖后调用摄像头直接崩溃

FATAL EXCEPTION: pool-8-thread-1
  Process: com.github.haocen2004.bh3_login_simulation, PID: 10390
  java.lang.NoSuchMethodError: No interface method onFailure()V in class Lcom/king/mlkit/vision/camera/analyze/Analyzer$OnAnalyzeListener; or its super classes (declaration of 'com.king.mlkit.vision.camera.analyze.Analyzer$OnAnalyzeListener' appears in /data/app/~~rPIv7MKO90s52TS5xx6zOw==/com.github.haocen2004.bh3_login_simulation-4YVxe6BTJgdzwWIrTmlLkw==/base.apk!classes11.dex)
    at com.king.wechat.qrcode.scanning.analyze.WeChatScanningAnalyzer.analyze(WeChatScanningAnalyzer.java:57)
    at com.king.mlkit.vision.camera.BaseCameraScan.lambda$startCamera$3$com-king-mlkit-vision-camera-BaseCameraScan(BaseCameraScan.java:354)
    at com.king.mlkit.vision.camera.BaseCameraScan$$ExternalSyntheticLambda4.analyze(Unknown Source:2)
    at androidx.camera.core.ImageAnalysis.lambda$setAnalyzer$2(ImageAnalysis.java:481)
    at androidx.camera.core.ImageAnalysis$$ExternalSyntheticLambda2.analyze(Unknown Source:2)
    at androidx.camera.core.ImageAnalysisAbstractAnalyzer.lambda$analyzeImage$0$androidx-camera-core-ImageAnalysisAbstractAnalyzer(ImageAnalysisAbstractAnalyzer.java:286)
    at androidx.camera.core.ImageAnalysisAbstractAnalyzer$$ExternalSyntheticLambda1.run(Unknown Source:14)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

经过排查 com.github.jenly1314.MLKit:mlkit-camera-core 这个库最多只能用1.2.0版本 1.3.0 和 1.4.0会出现上面崩溃

2.0版本代码构建、运行崩溃

最新代码,直接构建、安装、运行,启动就报错,无法加载库文件,请教应该怎么排查?

OpenCV error: Cannot load info library for OpenCV
Library list: ""
First attempt to load libs
Trying to init OpenCV libs
Trying to load library opencv_java4
Cannot load library "opencv_java4"

全部相关日志如下:

---------------------------- PROCESS STARTED (6705) for package com.king.wechat.qrcode.app ----------------------------
2023-08-18 08:04:33.884  6705-6705  GraphicsEnvironment     com.king.wechat.qrcode.app           V  ANGLE Developer option for 'com.king.wechat.qrcode.app' set to: 'default'
2023-08-18 08:04:33.885  6705-6705  GraphicsEnvironment     com.king.wechat.qrcode.app           V  ANGLE GameManagerService for com.king.wechat.qrcode.app: false
2023-08-18 08:04:33.886  6705-6705  GraphicsEnvironment     com.king.wechat.qrcode.app           V  Neither updatable production driver nor prerelease driver is supported.
2023-08-18 08:04:33.891  6705-6705  NetworkSecurityConfig   com.king.wechat.qrcode.app           D  No Network Security Config specified, using platform default
2023-08-18 08:04:33.892  6705-6705  NetworkSecurityConfig   com.king.wechat.qrcode.app           D  No Network Security Config specified, using platform default
2023-08-18 08:04:33.893  6705-6705  Compatibil...geReporter com.king.wechat.qrcode.app           D  Compat change id reported: 183155436; UID 10239; state: ENABLED
2023-08-18 08:04:33.905  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  meow new tls: 0xb400007107a29090
2023-08-18 08:04:33.905  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  meow reload base cfg path: na
2023-08-18 08:04:33.905  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  meow reload overlay cfg path: na
2023-08-18 08:04:33.906  6705-8005  libMEOW_gift            com.king.wechat.qrcode.app           I  open /data/performance/gift/arc.ini
2023-08-18 08:04:33.906  6705-8005  QT                      com.king.wechat.qrcode.app           E  [QT]file does not exist
2023-08-18 08:04:33.907  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  applied 1 plugins for [com.king.wechat.qrcode.app]:
2023-08-18 08:04:33.907  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D    plugin 1: [libMEOW_gift.so]: 0xb4000070c79ab820
2023-08-18 08:04:33.908  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  rebuild call chain: 0xb400007107a19080
2023-08-18 08:04:33.908  6705-8005  libMEOW                 com.king.wechat.qrcode.app           D  meow delete tls: 0xb400007107a29090
2023-08-18 08:04:33.961  6705-6705  WhiteNavigationLice     com.king.wechat.qrcode.app           I  Modify naviBarColor to 0xFFF0F0F0, and windowBackgroundColor is -1   /windowIsTranslucent:false
2023-08-18 08:04:33.980  6705-6705  MSYNC3-Var...efreshRate com.king.wechat.qrcode.app           I  Variable refreshrate is disabled
2023-08-18 08:04:33.995  6705-6705  chat.qrcode.app         com.king.wechat.qrcode.app           W  Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (unsupported, reflection, allowed)
2023-08-18 08:04:33.995  6705-6705  chat.qrcode.app         com.king.wechat.qrcode.app           W  Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (unsupported, reflection, allowed)
2023-08-18 08:04:33.999  6705-6705  Compatibil...geReporter com.king.wechat.qrcode.app           D  Compat change id reported: 210923482; UID 10239; state: ENABLED
2023-08-18 08:04:34.039  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  Trying to get library list
2023-08-18 08:04:34.041  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           E  OpenCV error: Cannot load info library for OpenCV
2023-08-18 08:04:34.041  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  Library list: ""
2023-08-18 08:04:34.041  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  First attempt to load libs
2023-08-18 08:04:34.041  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  Trying to init OpenCV libs
2023-08-18 08:04:34.041  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  Trying to load library opencv_java4
2023-08-18 08:04:34.042  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  Cannot load library "opencv_java4"
2023-08-18 08:04:34.042  6705-6705  System.err              com.king.wechat.qrcode.app           W  java.lang.UnsatisfiedLinkError: dlopen failed: library "libopencv_java4.so" not found
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at java.lang.Runtime.loadLibrary0(Runtime.java:1077)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at java.lang.Runtime.loadLibrary0(Runtime.java:998)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at java.lang.System.loadLibrary(System.java:1661)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at org.opencv.android.StaticHelper.loadLibrary(StaticHelper.java:64)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at org.opencv.android.StaticHelper.initOpenCVLibs(StaticHelper.java:95)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at org.opencv.android.StaticHelper.initOpenCV(StaticHelper.java:39)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at org.opencv.android.OpenCVLoader.initDebug(OpenCVLoader.java:107)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at org.opencv.OpenCV.initAsync(OpenCV.java:39)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at com.king.wechat.qrcode.app.MainActivity.onCreate(MainActivity.kt:44)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.Activity.performCreate(Activity.java:8338)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.Activity.performCreate(Activity.java:8317)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1388)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3770)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3984)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:145)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:105)
2023-08-18 08:04:34.043  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2407)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.os.Handler.dispatchMessage(Handler.java:106)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.os.Looper.loopOnce(Looper.java:204)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.os.Looper.loop(Looper.java:291)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at android.app.ActivityThread.main(ActivityThread.java:8153)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at java.lang.reflect.Method.invoke(Native Method)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
2023-08-18 08:04:34.044  6705-6705  System.err              com.king.wechat.qrcode.app           W  	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1136)
2023-08-18 08:04:34.044  6705-6705  OpenCV/StaticHelper     com.king.wechat.qrcode.app           D  First attempt to load libs fails
2023-08-18 08:04:34.044  6705-6705  OpenCV                  com.king.wechat.qrcode.app           D  Internal OpenCV library not found. Using OpenCV Manager for initialization
2023-08-18 08:04:34.047  6705-6705  OpenCVManager/Helper    com.king.wechat.qrcode.app           D  Request new service installation
2023-08-18 08:04:34.064  6705-6705  Compatibil...geReporter com.king.wechat.qrcode.app           D  Compat change id reported: 171228096; UID 10239; state: ENABLED
2023-08-18 08:04:34.090  6705-6705  SurfaceFactory          com.king.wechat.qrcode.app           I  [static] sSurfaceFactory = com.mediatek.view.impl.SurfaceFactoryImpl@b7595b7
2023-08-18 08:04:34.102  6705-6705  VRI[Package not found]  com.king.wechat.qrcode.app           D  hardware acceleration = true, forceHwAccelerated = false
2023-08-18 08:04:34.122  6705-6705  libMEOW                 com.king.wechat.qrcode.app           D  meow new tls: 0xb400007107a29090
2023-08-18 08:04:34.122  6705-6705  libMEOW                 com.king.wechat.qrcode.app           D  applied 1 plugins for [com.king.wechat.qrcode.app]:
2023-08-18 08:04:34.122  6705-6705  libMEOW                 com.king.wechat.qrcode.app           D    plugin 1: [libMEOW_gift.so]: 0xb4000070c79ab820
2023-08-18 08:04:34.122  6705-6705  libMEOW                 com.king.wechat.qrcode.app           D  rebuild call chain: 0xb400007107a19080
2023-08-18 08:04:34.123  6705-6705  InputTransport          com.king.wechat.qrcode.app           D  Create ARC handle: 0xb400006f27a09160
2023-08-18 08:04:34.128  6705-6705  chat.qrcode.app         com.king.wechat.qrcode.app           E  No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2)
2023-08-18 08:04:34.130  6705-6705  AndroidRuntime          com.king.wechat.qrcode.app           D  Shutting down VM
2023-08-18 08:04:34.131  6705-6705  AndroidRuntime          com.king.wechat.qrcode.app           E  FATAL EXCEPTION: main
                                                                                                    Process: com.king.wechat.qrcode.app, PID: 6705
                                                                                                    java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2)
                                                                                                    	at org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(Native Method)
                                                                                                    	at org.opencv.wechat_qrcode.WeChatQRCode.<init>(WeChatQRCode.java:44)
                                                                                                    	at com.king.wechat.qrcode.WeChatQRCodeDetector.initWeChatQRCode(WeChatQRCodeDetector.java:87)
                                                                                                    	at com.king.wechat.qrcode.WeChatQRCodeDetector.init(WeChatQRCodeDetector.java:44)
                                                                                                    	at com.king.wechat.qrcode.app.MainActivity.onCreate(MainActivity.kt:46)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8338)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8317)
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1388)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3770)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3984)
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:145)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:105)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2407)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:204)
                                                                                                    	at android.os.Looper.loop(Looper.java:291)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:8153)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1136)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(Native Method)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at org.opencv.wechat_qrcode.WeChatQRCode.<init>(WeChatQRCode.java:44)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at com.king.wechat.qrcode.WeChatQRCodeDetector.initWeChatQRCode(WeChatQRCodeDetector.java:87)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at com.king.wechat.qrcode.WeChatQRCodeDetector.init(WeChatQRCodeDetector.java:44)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at com.king.wechat.qrcode.app.MainActivity.onCreate(MainActivity.kt:46)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.Activity.performCreate(Activity.java:8338)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.Activity.performCreate(Activity.java:8317)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1388)
2023-08-18 08:04:34.131  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3770)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3984)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:145)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:105)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2407)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.os.Handler.dispatchMessage(Handler.java:106)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.os.Looper.loopOnce(Looper.java:204)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.os.Looper.loop(Looper.java:291)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at android.app.ActivityThread.main(ActivityThread.java:8153)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at java.lang.reflect.Method.invoke(Native Method)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
2023-08-18 08:04:34.132  6705-6705  ExceptionHandle         com.king.wechat.qrcode.app           I  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1136)
2023-08-18 08:04:34.160  6705-6705  Process                 com.king.wechat.qrcode.app           I  Sending signal. PID: 6705 SIG: 9
---------------------------- PROCESS ENDED (6705) for package com.king.wechat.qrcode.app ----------------------------

arm64-v8a平台,进入扫描界面过几秒app挂了

03-30 11:51:23.370 E/cv::error()(32381): OpenCV(4.9.0) Error: Requested object was not found (could not open directory: /data/app/***-RNwWSDNOyjf7H-aDC_PxVg==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/king/work/opencv/opencv-4.9.0/modules/core/src/glob.cpp, line 279

项目一跑起来就报这个错是为啥呢?

java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.wechat_qrcode.WeChatQRCode.WeChatQRCode_0(java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10 and Java_org_opencv_wechat_1qrcode_WeChatQRCode_WeChatQRCode_10__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2)

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.