2014-11-26 13 views
0

OnCameraFrame에서 핵심 포인트를 그려야하지만, 에로 (erro)가 있습니다. 누군가 나를 도울 수 있습니까?openCV를 사용하여 안드로이드에 keypoints를 그립니다.

코드 :

11-26 16:22:49.305: D/JavaCameraView(22620): Starting processing thread 
11-26 16:22:51.615: I/Choreographer(22620): Skipped 182 frames! The application may be doing  too much work on its main thread. 
11-26 16:22:51.735: D/JavaCameraView(22620): Preview Frame received. Frame size: 1382400 
11-26 16:22:51.735: I/ActivityManager(22620): Timeline: Activity_idle id: [email protected] time:135999496 
11-26 16:22:51.755: W/dalvikvm(22620): threadid=13: thread exiting with uncaught exception (group=0x41875e48) 

11-26 16 : 22 : 51.755 :

MatOfKeyPoint points = new MatOfKeyPoint(); 
    Mat mat = (Mat) inputFrame; 
    FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST); 
    fast.detect(mat, points); 


    Scalar redcolor = new Scalar(255,0,0); 
    Mat mRgba= mat.clone(); 
    Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4); 
    Core.line(mRgba, new Point(100, 100), new Point(300,300), new Scalar(0, 0, 255)); 

    Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3); 


    return mRgba; 

내 로그 캣이있다 E/AndroidRuntime (22620) : 치명적인 예외 나는 아래에 내 코드를 삽입 : Thread-35591 11-26 16 : 22 : 51.755 : E/AndroidRuntime (22620) : 프로세스 : com.nummist.secondsight, PID : 22620 11-26 16 : 22 : 51.755 : E/AndroidRuntime (22620) : java .lang.ClassCastException : org.opencv.android.JavaCameraView $ JavaCameraFrame을 사용할 수 없습니다. org.opencv.core.Mat로 캐스팅 11-26 16 : 22 : 51.755 : E/AndroidRuntime (22620) : com.nummist.secondsight.CameraActivity.onCameraFrame (CameraActivity.java:373) 11-26 16:22 : 51.755 : E/AndroidRuntime (22620) : org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame (CameraBridgeViewBase.java:387) 11-26 16 : 22 : 51.755 : E/AndroidRuntime (22620) : org.opencv.android에서 .JavaCameraView $ CameraWorker.run (JavaCameraView.java:328) 11-26 16 : 22 : 51.755 : E/AndroidRuntime (22620) : java.lang.Thread.run (Thread.java:841) 11-26 16 : 22 : 51.775 : D/JavaCameraView (22620) : 미리보기 프레임을 받았습니다. 프레임 크기 : 1382400 11-26 16 : 22 : 51.795 : D/JavaCameraView (22620) : 카메라에서 연결 해제 11-26 16 : 22 : 51.795 : D/JavaCameraView (22620) : 스레드에 알리기 11-26 16:22 : 51.795이 : D는/JavaCameraView (22620)이 : 굵은 스레드

에 대한 기다림하면 빨간색 로그 캣 메시지

답변

0

이다 나는 확실하지 오전하지만 난 당신이 사용한다고 생각 :

MatOfKeyPoint points = new MatOfKeyPoint(); 
Mat mat = inputFrame.rgba(); 
FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST); 
fast.detect(mat, points); 


Scalar redcolor = new Scalar(255,0,0); 
Mat mRgba= mat.clone(); 
Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4); 
Core.line(mRgba, new Point(100, 100), new Point(300,300), new Scalar(0, 0, 255)); 

Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3); 


return mRgba; 
+0

는 차이가 무엇인가 ? – NatsuDragonEye

+0

Mat mat = inputFrame.rgba(); – DavidGSola