2014-02-28 53 views
0

我的代碼在這裏。我正在使用Dr. Andrew Davison的代碼如何使用javaCV錄製視頻

private IplImage picGrab(FrameGrabber grabber, int ID) { 
    IplImage im = null; 
    try { 

     FrameRecorder rec = FrameRecorder.createDefault("vid.avi", 240, 360); 
     rec.setVideoCodec(CV_FOURCC('M', 'J', 'P', 'G')); 
     rec.setVideoBitrate(16); 
     rec.setFrameRate(25); 
     rec.setFormat("avi"); 
     rec.setPixelFormat(1); 
     rec.start(); 

     im = grabber.grab(); 

     // take a snap 
     // cvSaveImage("capture"+captureNo+".jpg", im); 
     rec.record(im); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println("Problem grabbing image for camera " + ID); 
    } 
    return im; 
} 

並且發生了跟隨異常。

com.googlecode.javacv.FrameRecorder$Exception: cvWriteFrame(): Could not record frame 
Problem grabbing image for camera 0 
Initializing OpenCV motion detector... 
    at com.googlecode.javacv.OpenCVFrameRecorder.record(OpenCVFrameRecorder.java:91) 
    at photocapture.MotionPanel.picGrab(MotionPanel.java:181) 
    at photocapture.MotionPanel.run(MotionPanel.java:100) 
    at java.lang.Thread.run(Thread.java:744) 
+1

如何解決這個錯誤。請幫幫我 –

回答

0

檢查幀的默認大小。當幀的默認大小小於設定框架大小

0

你需要確保FrameGrabber是有效的,通常我得到這個錯誤。該錯誤消息是設置它可能失敗的線索。

錯誤消息通知您不喜歡的東西:

FrameGrabber grabber = new OpenCVFrameGrabber(0); 

但設備0是不是你的相機。

在你應該增加安全檢查的方法的開頭:

private IplImage picGrab(FrameGrabber grabber, int ID) { 

    if (grabber == null) 
    { 
     System.out.println("!!! Bad OpenCVFrameGrabber"); 
     return null; 
    } 

    // ...