我正在学习开发android应用程序,我正试图将OpenCV合并到应用程序中。我决定制作一个简单的应用程序来显示图像。下面的代码给出:使用OpenCV在Android上显示图像
package com.example.first;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Canvas;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.webkit.WebView.FindListener;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity{
Mat m=Highgui.imread("C:/Users/Administrator/Desktop/circle1.png");
}
在检查中被显示以下错误的logcat:
E/AndroidRuntime(1310): FATAL EXCEPTION: main
E/AndroidRuntime(1310): java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.highgui.Highgui.imread_1:(Ljava/lang/String;)
E/AndroidRuntime(1310): at org.opencv.highgui.Highgui.imread_1(Native Method)
E/AndroidRuntime(1310): at org.opencv.highgui.Highgui.imread(Highgui.java:359)
E/AndroidRuntime(1310): at com.example.run.MainActivity.(MainActivity.java:26)
E/AndroidRuntime(1310): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(1310): at java.lang.Class.newInstance(Class.java:1130)
E/AndroidRuntime(1310): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime(1310): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
E/AndroidRuntime(1310): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
E/AndroidRuntime(1310): at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime(1310): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
E/AndroidRuntime(1310): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(1310): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1310): at android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime(1310): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1310): at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime(1310): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
E/AndroidRuntime(1310): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1310): at dalvik.system.NativeStart.main(Native Method)
什么是错的代码?
你是否能够让世界各地的应用程序显示图像? (说,stackoverflow徽标?) – 18446744073709551615
@ 18446744073709551615在activity_main.xml文件中,当我在图形布局中查看它时,我可以看到图像,但是当我在模拟器上运行它时,它不显示图像。 –
如果您无法编写显示图像的应用程序,则这是与opencv无关的另一个问题。 (如果遇到别人遇到的问题,欢迎在Google上搜索示例或询问。)一旦设法显示图像,您必须将Mat转换为Android可以自行理解的内容(例如,制作一个位图可绘制,或者将Mat保存为png)并显示它。 – 18446744073709551615