本帖最后由 alex159s 于 2014-04-19 08:29:40 编辑

解决方案 »

  1.   

    手动置顶一次。求人解答,自己怀疑是cvQueryFrame函数的问题,导致这个赋值出了问题。。但是查不到这个函数源码,没法进行分析。。可以通过源码查看这个函数的赋值情况。
      

  2.   

    代码 没看出问题
    vQueryFrame 有源码的啊, 但是 几乎调用的都是系统api你这个pCap 是 读取文件的,还是 摄像头的
      

  3.   

    pCapture = cvCreateFileCapture("C:\\videolongxvid.avi"); 
    if (pCapture==NULL)
    {
    AfxMessageBox(_T("找不到视频文件!"));
    }
    double fps=cvGetCaptureProperty(pCapture, CV_CAP_PROP_FPS );   //读取视频的帧率
    pFrame= cvQueryFrame(pCapture); 
    if (pFrame==NULL)
    break; 反正我以前是这么写的。。
      

  4.   

    应该不是你文件的问题吧?
    不是。这个可以用LearningOpenCV上面的播放器例程播放。
      

  5.   

    你可以调试一下看
    pFrame= cvQueryFrame(pCapture);这句 结束之后
    pFrame的状态。
    我程序与OpenCV相关的程序步骤也和《学习OpenCV》例程一样。
    像你这个一样,先
    pCapture = cvCreateFileCapture("C:\\videolongxvid.avi"); 
    再pFrame= cvQueryFrame(pCapture); 
    除了没那两个判断,其实我感觉判断也不必要,一般cvCreateFileCapture除非文件本身有问题否则一般不会失败,后面这个我调试也能看出来,但是这两步是《学习OpenCV》播放器例程一样的步骤,但是怎么就有错呢。我一学长也说这应该是不会出错的。而且我调试添加语句cvGetCaptureProperty获取的pCap属性完全正常,照理说下面pFrame= cvQueryFrame(pCap); 也应该不会有错。但偏偏它就有错。我也不知道怎么办。