无法在必需品中加载Opencv库

时间:2012-02-29 00:10:22

标签: android c++ qt opencv

我尝试使用OpenCV在必需品​​项目中使用相机。我在.pro文件上有这个

INCLUDEPATH += C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/include \
                C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/modules

LIBS += C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/libs/armeabi/libnative_camera_r2.2.2.so \
        C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/libs/armeabi/libnative_camera_r2.3.3.so \
        C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/libs/armeabi/libopencv_androidcamera.a \
        C:/OpenCV-2.3.1-android-bin/OpenCV-2.3.1/libs/armeabi/libopencv_calib3d.a \ ...

当我按下按钮时,我会调用相机:

void MainWindow::on_foto_clicked()
{
    CvCapture * camera = cvCreateCameraCapture( 0 );
    IplImage * image = cvQueryFrame( camera );

    cvReleaseCapture( &camera );
}

当我运行它并尝试在设备上运行时,使用Android 2.3.4的三星Galaxy gio,我得到了这个:

W/System.err(17481): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1963]:    94 could not load needed library 'libnative_camera_r2.2.2.so' for 'libGeopei.so' (load_library[1105]: Library 'libnative_camera_r2.2.2.so' not found)

我是否缺少加载任何库或包含?

提前致谢

1 个答案:

答案 0 :(得分:4)

您需要手动将libnative_camera_r2.2.2.so复制到/android/libs/armeabi-v7a目录。

然后,修改QtActivity.java文件以便在启动时手动加载库:

String appPath = getApplication().getApplicationContext().getFilesDir().getAbsolutePath(); 

//application path
System.load(appPath+"/../lib/libnative_camera_r2.3.3.so");
System.load(appPath+"/../lib/libopencv_java.so");