安卓运行Opencv项目提示Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.9.0)

文章描述了一个Android应用在使用OpenCV进行人脸检测时遇到的CvException错误,原因是模型未正确加载。解决方法是将haarcascade_frontalface_alt.xml文件从OpenCV模块复制到app的assets目录。

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

运行项目编写代码之后提示爆了如下错误: (错误得右移才能看到)

FATAL EXCEPTION: main
Process: com.guo.facecollection, PID: 31454
                                                                                                    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1543586025, result=-1, data=Intent { dat=content://media/... flg=0x41 clip={image/* video/* {U(content)}} }} to activity {com.guo.facecollection/com.guo.facecollection.MainActivity}: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.9.0) /home/ci/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
                                                                                                    ]
                                                                                                    	at android.app.ActivityThread.deliverResults(ActivityThread.java:5683)
                                                                                                    	at android.app.ActivityThread.handleSendResult(ActivityThread.java:5727)
                                                                                                    	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67)
                                                                                                    	at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2545)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:222)
                                                                                                    	at android.os.Looper.loop(Looper.java:314)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:8530)
                                                                                                    	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:1010)
                                                                                                    Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.9.0) /home/ci/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
                                                                                                    ]
                                                                                                    	at org.opencv.objdetect.CascadeClassifier.detectMultiScale_5(Native Method)
                                                                                                    	at org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:195)
                                                                                                    	at com.guo.facecollection.MainActivity.handlePickedImage(MainActivity.kt:104)
                                                                                                    	at com.guo.facecollection.MainActivity.onCreate$lambda$1(MainActivity.kt:57)
                                                                                                    	at com.guo.facecollection.MainActivity.$r8$lambda$ljonoLGQ7FrAW3xK0wk7FL3fE_Y(Unknown Source:0)
                                                                                                    	at com.guo.facecollection.MainActivity$$ExternalSyntheticLambda0.onActivityResult(Unknown Source:4)
                                                                                                    	at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:414)
                                                                                                    	at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:371)
                                                                                                    	at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:845)
                                                                                                    	at android.app.Activity.dispatchActivityResult(Activity.java:9255)
                                                                                                    	at android.app.ActivityThread.deliverResults(ActivityThread.java:5676)

原因: 没有在app模块载入opencv的模型.

解决: 找到opencv模块目录下`haarcascade_frontalface_alt.xml` 文件并将其复制到在 app 模块的 main 目录下新建 `assets` (没有就新建).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值