繁体   English   中英

如何使用javaCV录制视频

[英]How record video using javaCV

我的代码在这里。 我正在使用Andrew Davison博士的代码

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)

检查您的默认帧大小。当默认帧大小小于设置的帧大小时,通常会出现此错误

您需要确保FrameGrabber有效。 该错误消息是一个提示,表明它可能已失败。

该错误消息通知您执行了以下操作:

FrameGrabber grabber = new OpenCVFrameGrabber(0);

但是设备0不是您的相机。

在方法开始时,您应该添加安全检查:

 private IplImage picGrab(FrameGrabber grabber, int ID) {

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

    // ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM