我目前正在开发面部识别的Android应用程序.所以我从github获得了一个源代码.它使用OpenCv,但源代码使用旧版本的OpenCv,我使用的是最新版本3.0.0.代码没有错误,并且它成功打开了应用程序,但是当我指向某个人的脸时,它突然停止了工作.
它给了我一个这样的错误:
Process: com.example.syafiq.test, PID: 3249 java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.imgproc.Imgproc.rectangle_1:(JDDDDDDDDI)V at org.opencv.imgproc.Imgproc.rectangle_1(Native Method) at org.opencv.imgproc.Imgproc.rectangle(Imgproc.java:2779) at com.example.syafiq.test.FdActivity.onCameraFrame(FdActivity.java:431) at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:393) at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:346) at java.lang.Thread.run(Thread.java:841)
(Imgproc.java:2779)指出:
rectangle_1(img.nativeObj, pt1.x, pt1.y, pt2.x, pt2.y, color.val[0], color.val[1], color.val[2], color.val[3], thickness);
(FdActivity.java:431)指出:
(line430) for (int i = 0; i < facesArray.length; i++) (line431) Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3);
在此之前,(FdActivity.java:431)上的源代码是Core.rectangle,这是一个错误,所以我已经根据我发现修复该代码行的Internet将其更改为Imgproc.
On(CameraBridgeViewBase.java:393)指出:
(line392) if (mListener != null) { (line393) modified = mListener.onCameraFrame(frame);
On(JavaCameraView.java:346)指出:
(line345) if (!mFrameChain[1 - mChainIdx].empty()) (line346) deliverAndDrawFrame(mCameraFrame[1 - mChainIdx]);
我是Android开发的新手,也是OpenCV的新手:/我感谢你的时间,并帮助我考虑帮助我.
提前致谢 :)
昨天我在寻找同一答案的解决方案时看到了这个悬而未决的问题.我找不到符合我情况的答案.事实证明我的解决方案非常简单.我使用的是为OpenCV 2.4编写的示例代码,当我使用OpenCV 3.1时,我不得不从Core.rectangle更改为ImgProc.rectanle.我的代码和包含很好,但我错过了我的异步初始化有错误的版本.我需要将我的初始化更新到正确的版本.
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0,this,mLoaderCallback);
这纠正了这个问题.由于您的问题是5个月大,您可能会继续前进,但其他人可能会看到这一点.