基于eclipse和opencv的android图像处理
如何使用openCV库和eclipse for android从没有cameraview的文件中选择图像来进行图像处理?我尝试了这段代码,但出现了一个错误java.lang.NullPointerException基于eclipse和opencv的android图像处理,android,eclipse,opencv,Android,Eclipse,Opencv,如何使用openCV库和eclipse for android从没有cameraview的文件中选择图像来进行图像处理?我尝试了这段代码,但出现了一个错误java.lang.NullPointerException public class MainActivity extends Activity { protected static final String TAG = null; private final String imageInSD1 = "/sdcar
public class MainActivity extends Activity {
protected static final String TAG = null;
private final String imageInSD1 = "/sdcard/dapi1.jpg";
//private final String imageInSD2 = "/sdcard/fitch1.jpg";
//private final String imageInSD3 = "/sdcard/txred1.jpg";
private BaseLoaderCallback mLoaderCallBack = new BaseLoaderCallback(this){
@Override
public void onManagerConnected(int status){
switch(status){
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG,"OpenCV loaded succesfully");
mOpenCvCameraView.enableView();
}
default:
{
super.onManagerConnected(status);
}
}
}
};
public void onResume(){
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallBack);
}
private JavaCameraView mOpenCvCameraView;
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView myImageView = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = BitmapFactory.decodeFile(imageInSD1);
Size size = new Size(bitmap.getWidth(), bitmap.getHeight());
Mat src = new Mat(size,CvType.CV_8UC3);
Utils.bitmapToMat(bitmap,src);
Imgproc.cvtColor(src, src, Imgproc.COLOR_RGB2GRAY);
Imgproc.threshold(src, src, 100, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C);
Utils.matToBitmap(src, bitmap);
myImageView.setImageBitmap(bitmap);
}
}
错误
08-17 10:21:03.765:E/AndroidRuntime(1014):致命异常:主
08-17 10:21:03.765:E/AndroidRuntime(1014):
java.lang.NullPointerException 08-17 10:21:03.765:
E/AndroidRuntime(1014):在
com.example.deneme4.MainActivity$1.onManagerConnectioned(MainActivity.java:41)
08-17 10:21:03.765:E/AndroidRuntime(1014):在
org.opencv.android.AsyncServiceHelper$1.onServiceConnected(AsyncServiceHelper.java:318)
08-17 10:21:03.765:E/AndroidRuntime(1014):在
LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1131)
08-17 10:21:03.765:E/AndroidRuntime(1014):在
LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1148)
08-17 10:21:03.765:E/AndroidRuntime(1014):在
android.os.Handler.handleCallback(Handler.java:800)08-17
10:21:03.765:E/AndroidRuntime(1014):在
android.os.Handler.dispatchMessage(Handler.java:100)08-17
10:21:03.765:E/AndroidRuntime(1014):在
android.os.Looper.loop(Looper.java:194)08-17 10:21:03.765:
E/AndroidRuntime(1014):在
android.app.ActivityThread.main(ActivityThread.java:5405)08-17
10:21:03.765:E/AndroidRuntime(1014):在
java.lang.reflect.Method.Invokenactive(本机方法)08-17
10:21:03.765:E/AndroidRuntime(1014):在
java.lang.reflect.Method.invoke(Method.java:525)08-17 10:21:03.765:
E/AndroidRuntime(1014):在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838)
08-17 10:21:03.765:E/AndroidRuntime(1014):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)08-17
10:21:03.765:E/AndroidRuntime(1014):在
dalvik.system.NativeStart.main(本机方法)
请参阅异常堆栈跟踪的这一部分:
E/AndroidRuntime(1014):位于com.example.deneme4.MainActivity$1.onManagerConnected(MainActivity.java:41)08-17
它告诉您引发异常(41)的行以及方法名称的名称(MainActivity$1.onManagerConnected)
查看您的onManagerConnected方法,您似乎试图在未初始化的对象上调用方法:
mOpenCvCameraView.enableView();
要解决此问题,只需首先初始化mOpenCvCameraView。您应该检查logcat中的stacktrace,并查看在哪一行中通过添加错误部分执行异常,您能帮我吗?