Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CVR框架峭壁_C++_Opencv - Fatal编程技术网

C++ CVR框架峭壁

C++ CVR框架峭壁,c++,opencv,C++,Opencv,我试图编写一个简单的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_P

我试图编写一个简单的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_中,帧数是153,据我所知,这是正确的帧数。 cvGrabFrame返回1到ret,但是cvRetrieveFrame崩溃

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

有什么想法吗


谢谢

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

像下面这样

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

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

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

像下面这样

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

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

您使用的是哪个版本的OpenCV?大家都知道Opencv有这样的问题。我已经下载了2.4.0,我也有同样的问题。你使用的是哪个版本的Opencv?Opencv也有这样的问题。我已经下载了2.4.0,我也有同样的问题。最后有一个版本,我只是没有复制它。代码实际上与您的代码相同,添加星号是因为我试图格式化文本并使代码看起来粗体。你可以看到在代码的末尾有两个额外的星号哦,这对我来说是一个新的星号,双引号!尽管如此,最后几步可能对您有用的是安装cam的驱动程序,看看您的相机是否受opencv支持,不要混合任何x64、x86版本,即使这不起作用,尝试重建OpenCV的二进制文件。我正在使用预先录制的AVI文件崩溃在:虚拟IplImage*retrieveFrame(int){unsigned char*data=0;int step=0,width=0,height=0,cn=0;if(!ffmpegCapture | | |!icvRetrieveFrame_FFMPEG|p)(ffmpegCapture,&data,&step,&width,&height,&cn)返回0;cvInitImageHeader(&frame,cvSize(width,height),8,cn);cvSetData(&frame,data,step);返回&frame;}最后有一个版本,我只是没有复制它。代码实际上和你的一样,添加了星号,因为我试图格式化文本并使代码看起来粗体。你可以看到,在代码的最后有两个额外的星号哦,这对我来说是一个新的,双引号!尽管如此,最后的几个步骤可能对您有用的是安装cam的驱动程序,查看您的相机是否受opencv支持,不要混合任何x64、x86版本,即使这不起作用,也尝试重建opencv的二进制文件。我使用的是预录的AVI文件崩溃在:virtual IplImage*retrieveFrame(int)中的icvRetrieveFrame\u FFMPEG\p中{unsigned char*data=0;int step=0,width=0,height=0,cn=0;if(!ffmpegCapture | | |!icvRetrieveFrame(ffmpegCapture,&data,&step,&width,&height,&cn)返回0;cvInitImageHeader(&frame,cvSize(width,height),8,cn);cvSetData(&frame,data,step);返回&frame;}