2016-05-13 17 views
0

Ich versuche, eine Objektverfolgung Anwendung auf Android mit der OpenCV CamShift-Funktion zu implementieren. Ich benutze die Kamera meines Android Tablets, um ein Bild zu bekommen. Ich definiere ein Rechteck des Raumes, den ich innerhalb des Bildrahmens verfolgen möchte. Danach übergebe ich diese beiden Werte an die Video.Cashhift-Funktion sowie ein Terminal-Kriterium. Nachdem ich die Anwendung zu starten erhalte ich eine:OpenCV Android CamShift Assertion fehlgeschlagen Fehler

OpenCV Fehler: Assertion -error fehlgeschlagen

Hier ist der relevante Code:

public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 

    Mat scene = inputFrame.rgba(); 

    if(trackingFrame == null){ 
      trackingFrame = new Rect(scene.cols()/2,scene.rows()/2,50,50); 
    } 
    System.out.println(trackingFrame.size().toString()); 
    RotatedRect box =Video.CamShift(scene, trackingFrame, new TermCriteria(TermCriteria.EPS,10,1)); 
    trackingFrame = box.boundingRect(); 
    Point pt1 =new Point(trackingFrame.x,trackingFrame.y); 
    Point pt2 =new Point(trackingFrame.x+trackingFrame.width,trackingFrame.y+trackingFrame.height); 
    Scalar RED = new Scalar(255,0,0); 
    Imgproc.rectangle(scene, pt1, pt2, RED); 
    return scene; 
} 

Und das ist der Fehler, den ich bekommen:

E/cv::error()(19177): OpenCV Error: Assertion failed (cn == 1) in int cv::meanShift(cv::InputArray, cv::Rect&, cv::TermCriteria), file /home/maksim/workspace/android-pack/opencv/modules/video/src/camshift.cpp, line 59 
E/org.opencv.video(19177): video::CamShift_10() caught cv::Exception: /home/maksim/workspace/android-pack/opencv/modules/video/src/camshift.cpp:59: error: (-215) cn == 1 in function int cv::meanShift(cv::InputArray, cv::Rect&, cv::TermCriteria) 
W/dalvikvm(19177): threadid=11: thread exiting with uncaught exception (group=0x42f05500) 
E/AndroidRuntime(19177): FATAL EXCEPTION: Thread-8274 
E/AndroidRuntime(19177): CvException [org.opencv.core.CvException: cv::Exception: /home/maksim/workspace/android-pack/opencv/modules/video/src/camshift.cpp:59: error: (-215) cn == 1 in function int cv::meanShift(cv::InputArray, cv::Rect&, cv::TermCriteria) 

Ich verstehe nicht wirklich, was das Problem ist, da die Fehlermeldungen nichts bestimmtes sagen. Kann mir jemand helfen?

Antwort

-1

Ok, ich habe meinen Fehler gefunden. Statt den Kameraeingang zu verwenden, musste ich zuerst:

  • wählen Sie das Objekt innerhalb des Bildes I
  • machen ein Histogramm dieses Bild verfolgen möge mit calcHist
  • Einsatz, die für die calcBackProject Funktion Histogramm
  • verwenden, um die Ausgabe des calcBackProject im Video.CamShift -function
+0

wenn das Problem gelöst ist, bearbeiten Sie bitte die ein nswer mit dem vollständig gelösten Code. –

Verwandte Themen