Assertion failed in Video.java class

asked 2013-10-14 16:07:57 -0600

Ioanna gravatar image

I am running my code : import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.highgui.Highgui; import org.opencv.video.Video;

public class openCvHello { public static void main( String[] args ) { System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); Mat mat = Mat.eye( 600, 800, CvType.CV_8UC1 ); Mat prev=Mat.ones( 800, 600, CvType.CV_8UC1 ); Mat next =Mat.ones( 800, 600, CvType.CV_8UC1 ); Mat flow=Mat.ones( 800, 600, CvType.CV_32FC2);

   String prev_img_path ="C:/Users/user/Desktop/SampleImages/Frame19.tif";
   String next_img_path ="C:/Users/user/Desktop/SampleImages/Frame20.tif";

  File file_prev_img = new File(prev_img_path);

  if (file_prev_img.exists()) { // This is true
          prev = Highgui.imread(file_prev_img.getAbsolutePath());  //file.getPath() also same
         if ( prev.empty() ) 
         { System.out.println( "prev image does not exist!!"); }
     }
  File file_next_img = new File(next_img_path);
  if (file_next_img.exists()) { // This is true
      next = Highgui.imread(file_next_img.getAbsolutePath());  //file.getPath() also same
     if ( next.empty() ) 
     { System.out.println( "next image does not exist!!"); }
 }


   Video.calcOpticalFlowFarneback(prev,next,flow,0.5,1, 1, 1, 7,1.5,Video.OPTFLOW_USE_INITIAL_FLOW );
  System.out.println( "flow = " + flow.dump() );

} } this error occur OpenCV Error: Assertion failed (prev0.size() == next0.size() && prev0.channels() == next0.channels() && prev0.channels() == 1 && pyr_scale < 1) in unknown function, file ......\src\opencv\modules\video\src\optflowgf.cpp, line 579 Exception in thread "main" CvException [org.opencv.core.CvException: ......\src\opencv\modules\video\src\optflowgf.cpp:579: error: (-215) prev0.size() == next0.size() && prev0.channels() == next0.channels() && prev0.channels() == 1 && pyr_scale < 1 ] at org.opencv.video.Video.calcOpticalFlowFarneback_0(Native Method) at org.opencv.video.Video.calcOpticalFlowFarneback(Video.java:293)

I already ask many questions for the calcOpticalFlowFarneback(). I am wondering if you can not help me who i have to ask?

edit retag flag offensive close merge delete

Comments

so, both images exist. what's left ? the size, probably. could you check, if both images have the same width / height / channels actually ? the code upfront(where you're trying to set sizes) is irrelevant, since loading the images from disk will overwrite anything you set before

berak gravatar imageberak ( 2013-10-14 17:18:05 -0600 )edit
1

oooh, bear with me for being lame, but it wants grayscale images for both(prev0.channels() == 1), so either cvtColor() both with CvType.COLOR_RGB2GRAY, or use imread(fname, 0); // to load as grayscale

berak gravatar imageberak ( 2013-10-14 17:27:20 -0600 )edit

My hero thank you very much:) it is working:D

Ioanna gravatar imageIoanna ( 2013-10-15 10:21:21 -0600 )edit