2016-05-13 91 views
0

我想在android上使用OpenCV camShift函數實現對象跟蹤應用程序。我正在使用我的android平板電腦的相機來獲取圖像幀。我在圖像框架內定義了一個我想要跟蹤的空間的矩形。之後,我將這兩個值傳遞給Video.Camshift函數以及終端條件。當我啓動應用程序,我得到一個:OpenCV Android CamShift聲明失敗錯誤

OpenCV的錯誤:斷言失敗 - 錯誤

下面是相關代碼:

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; 
} 

這是我的錯誤:

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) 

我真的不明白問題是什麼,因爲錯誤消息沒有說明任何具體的東西。有誰能夠幫助我?

回答

-1

好的,我發現我的錯誤。 而不是使用攝像機輸入的,我首先必須:

  • 選擇我要跟蹤
  • 使該照片的直方圖calcHist
  • 使用該直方圖的calcBackProject函數裏面的圖片對象
  • 使用calcBackProject的輸出在Video.CamShift -function
+0

如果問題解決,請編輯一個完成解決的代碼。 –