1

我正在尝试编写一个简单的 openCV 代码来创建捕获并从中检索第一帧。

**CvCapture *m_pCapfile = cvCreateFileCapture(m_aviFileName.c_str());
if (m_pCapfile)
     m_frames = cvRound(cvGetCaptureProperty(m_pCapfile, CV_CAP_PROP_FRAME_COUNT));
cvSetCaptureProperty(m_pCapfile, CV_CAP_PROP_POS_FRAMES, 0);
int ret = cvGrabFrame( m_pCapfile);
IplImage *cap = cvRetrieveFrame( m_pCapfile);**

在 m_frames 中有 153,据我所知,这是正确的帧数。cvGrabFrame 返回 1 到 ret 但是cvRetrieveFrame崩溃。

我尝试使用cvCaptureFromFilecvCaptureFromAVI而不是cvCreateFileCapture 在这两种情况下cvRetrieveFrame方法都会崩溃。

有任何想法吗?

谢谢

4

1 回答 1

1

**CvCapture *m_pCapfile = cvCreateFileCapture(m_aviFileName.c_str()); 这不应该是 CvCapture 吗?

像下面这样

CvCapture *m_pCapfile = cvCreateFileCapture(m_aviFileName.c_str());

我认为您需要将代码更改为我建议的内容。另外,如果这是您的完整代码,请确保在检索帧的循环期间,您没有调用 cvReleaseCapture()。只有当您捕获了所有帧或您想要的指定帧数时,才会在最后调用此方法。

于 2012-11-01T07:29:08.337 回答