BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #49041同步于 2016/4/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]空指针求教

zkkai
2016/4/3镜像同步3 回复
代码如下,运行报空指针错误,求教各位老司机! public picProc mpicPro; mpicPro.picProc(rootPath + "/object", rootPath, "scene1.jpg"); public class picProc { public String objectImgPath; public String sceneImgPath; public String objectImgName = "object.jpg"; public String sceneImgName; public Mat objectMat = new Mat(); public Mat objectImg = new Mat(); public Mat objectGray = new Mat(); public Mat sceneMat = new Mat(); public Mat sceneImg = new Mat(); public Mat sceneGray = new Mat(); public Bitmap grayBmpOut; public Size sSize5; public void picProc(String objectImgPath, String sceneImgPath, String sceneImgName) { this.objectImgPath = objectImgPath; this.sceneImgPath = sceneImgPath; this.sceneImgName = sceneImgName; MatOfKeyPoint objectKeypoints; MatOfKeyPoint sceneKeypoints; //transform object img into objectGray Bitmap objectBmp = BitmapFactory.decodeFile(objectImgPath + "/" + objectImgName); Utils.bitmapToMat(objectBmp, objectMat); objectMat.copyTo(objectImg); Imgproc.cvtColor(objectImg, objectGray, Imgproc.COLOR_RGBA2GRAY); //transform scene img into sceneGray Bitmap sceneBmp = BitmapFactory.decodeFile(sceneImgPath + "/" + sceneImgName); Utils.bitmapToMat(sceneBmp, sceneMat); sceneMat.copyTo(sceneImg); Imgproc.cvtColor(sceneImg, sceneGray, Imgproc.COLOR_RGBA2GRAY); if (objectMat==null || sceneMat==null){ System.out.print("----Error getting mat"); } if (objectGray==null || sceneGray==null){ System.out.print("----Error getting grayscale"); } //get keypoints FeatureDetector detector = FeatureDetector.create(FeatureDetector.BRISK); objectKeypoints = new MatOfKeyPoint(); sceneKeypoints = new MatOfKeyPoint(); detector.detect(objectGray, objectKeypoints); detector.detect(sceneGray, sceneKeypoints); //get descriptors; DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.BRISK); Mat objectDescriptors = new Mat(); Mat sceneDescriptors = new Mat(); descriptor.compute(objectGray, objectKeypoints, objectDescriptors); descriptor.compute(sceneGray, sceneKeypoints, sceneDescriptors); //Match DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.FLANNBASED); MatOfDMatch matches = new MatOfDMatch(); matcher.match(objectDescriptors, sceneDescriptors, matches); double max_dist = 0; double min_dist = 100; List<DMatch> matchesList = matches.toList(); List<DMatch> bestMatcheList = new ArrayList<DMatch>(); MatOfDMatch bestMatchMat = null; //-- Quick calculation of max and min distances between keypoints for( int i = 0; i < matchesList.size(); i++ ) { double dist = (double) matchesList.get(i).distance; if( dist < min_dist ) min_dist = dist; if( dist > max_dist ) max_dist = dist; } System.out.printf("-- Max dist : %f \n", max_dist); System.out.printf("-- Min dist : %f \n", min_dist); //-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist ) for( int i = 0; i < matchesList.size(); i++ ){ double dist = (double) matchesList.get(i).distance; if( dist < 3*min_dist ) { bestMatcheList.add( matchesList.get(i)); } } //get best match mat bestMatchMat.fromList(bestMatcheList); Mat matchOutImg = new Mat(); Features2d.drawMatches(objectMat, objectKeypoints, sceneMat, sceneKeypoints, bestMatchMat, matchOutImg); saveMat2Pic(matchOutImg, sceneImgPath, "matchOutImg"+String.valueOf(System.currentTimeMillis())+".jpg"); } } 其中saveMat2Pic()肯定没问题。出错信息如下,多谢各位老司机! E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.kerwin.idrec, PID: 15149 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kerwin.idrec/com.example.kerwin.idrec.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) at android.app.ActivityThread.access$800(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5315) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.example.kerwin.idrec.MainActivity.onCreate(MainActivity.java:59) at android.app.Activity.performCreate(Activity.java:5280) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) at android.app.ActivityThread.access$800(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5315) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) at dalvik.system.NativeStart.main(Native Method) 04-03 21:39:34.251 15149-15149/com.example.kerwin.idrec I/Process: Sending signal. PID: 15149 SIG: 9
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
dongqing机器人#1 · 2016/4/3
出错信息呢?
zkkai机器人#2 · 2016/4/3
已更新出错信息,请查看! 【 在 dongqing 的大作中提到: 】 : 出错信息呢?
dongqing机器人#3 · 2016/4/3
我不懂。帮顶 【 在 zkkai 的大作中提到: 】 : 已更新出错信息,请查看!