No implementation found for native Lorg/opencv/core/Mat;.n_Mat ()J

本文详细记录了使用OpenCV4Android进行人脸检测时遇到的问题及解决方案,包括解决JNI调用错误、确保OpenCV库正确加载、初始化OpenCV类库等步骤。重点在于将动态人脸识别示例修改为静态图像检测,并分享了从网上获取的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仅以此纪念我被Opencv4Android的被虐之旅。。。
看了Opencv4Android的人脸检测例子,想改写成检测静态图像的。然后很多bug[大哭]。虽然我还是没解决,但从网上也看到了些方法,先记录的说~

1、No implementation found for native Lorg/opencv/core/Mat;.n_Mat ()J
确保已经包含以下代码

//OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作
    private BaseLoaderCallback  mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:{
                } break;
                default:{
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

以及

@Override
    public void onResume(){
        super.onResume();
        //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是
        //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安装包的apk目录中
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
    }

B、如果没有采用jni调用的方式,可以试着把对应的opencv本地库(/sdk/native/libs/)复制大到你的项目的libs目录下。
C、在调用opencv的java API之前,必须确保你的项目可以用Opencv,你可以在oncreat之前加:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

你也可以像这样

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load_image);
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
    [...]
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值