我试图用FFmpegFrameGrabber打开一个ONVIF WIFI摄像机,以在Android Studio的javacv中使用。 我将frameGrabber.grabImage()发送到AsyncTask 在SurfaceView的渲染方法中:
'''
Mat mat0= new Mat(1080,1920,CV_8UC1);
Mat mat=new Mat(1080,1920,CV_8UC3);;
TestTask task = new TestTask();
task.execute();
mat = new ToMat().convert(frame);
if (!(mat ==null)){
cvtColor(mat, mat0, CV_BGR2GRAY);
clahe.apply(mat0, mat0);
frame = converterToMat.convert(mat0);
bitmap = converterToBitmap.convert(frame);
'''
这是AsyncTask:
'''
private class TestTask extends AsyncTask<Void, Void, org.bytedeco.javacv.Frame> /* Params, Progress, Result */ {
@Override
protected Frame doInBackground(Void... params) {
try {
frame = frameGrabber.grabImage();
Log.d(LOGTAG, "frameGrabber is grabImage");
} catch (Exception e) {
e.printStackTrace();
};
return frame;
}
'''
构建成功,但运行时出现此错误:
Caused by: ...(address)... couldn't find "libopencv_imgproc.so" at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
因为我确保使用javaCV 1.5,所以在下面使用这些依赖项:
'''
implementation group: 'org.bytedeco', name: 'javacpp', version: '1.5'
implementation group: 'org.bytedeco', name: 'javacv-platform', version: '1.5'
implementation group: 'org.bytedeco', name: 'opencv-platform', version: '4.0.1-1.5'
implementation group: 'org.bytedeco', name: 'ffmpeg', version: '4.1.3-1.5'
请帮助我,我能解决这个问题吗?