for   (int   i   =   0;   i   <   100   ;   i++) 

                          m_capture   =   cvCaptureFromFile(filename);     //获得AVI视频                           //对视频帧进行提取,并转换为BMP图片格式 
          m_avi[k]   =   cvQueryFrame(m_capture); 
          k++; 

//结果m_avi[i]中存放的都是第0帧                 m_capture   =   cvCaptureFromFile(filename);     //获得AVI视频                 for   (int   i   =   0;   i   <   100   ;   i++) 
{                     
                          //对视频帧进行提取,并转换为BMP图片格式 
          m_avi[k]   =   cvQueryFrame(m_capture); 
          k++; 

//结果m_avi[i]中存放的都是第100帧 请问要怎么办才能从0帧存到第99帧,谢谢 

解决方案 »

  1.   

    改好点格式for (int i = 0; i < 100 ; i++)
    {
        m_capture = cvCaptureFromFile(filename);  //获得AVI视频     //对视频帧进行提取,并转换为BMP图片格式
         m_avi[k] = cvQueryFrame(m_capture);    k++;
    }
    //结果好象m_avi[i]中存放的都是第0帧
    m_capture = cvCaptureFromFile(filename);  //获得AVI视频for (int i = 0; i < 100 ; i++)
    {          
        //对视频帧进行提取,并转换为BMP图片格式
         m_avi[k] = cvQueryFrame(m_capture);    k++;
    }
    //结果好象m_avi[i]中存放的都是第100帧请问要怎么办才能从0帧存到第99帧,谢谢
      

  2.   

    获得AVI视频没跟i联系起来.    不知道cvCaptureFromFile是怎样运行的,K又是做什么的呢?
      

  3.   


    m_capture = cvCaptureFromFile(filename);  //获得AVI视频 int k = 0;
    IplImage* pFrame;while( NULL != ( pFrame = cvQueryFrame(m_capture) ) )  
    {      
        //对视频帧进行提取,并转换为BMP图片格式 
         cvCopy( pFrame, m_avi[ k++ ] );  //将当前视频拷贝到对应的m_avi[k]中 
    }PS:
       对于楼主的问题存在以下疑问:
       1:m_avi[k]分配好了吗?还是都是指针???
       2. 转换成BMP图片格式的函数是否写好并正确调用??
       
    注意:上述每cvQuery一帧,都是放在同一块内存中,下次读时会覆盖,也许你没有意识到这一点。