无法使用OpenCV保存图像

时间:2012-04-01 07:43:22

标签: c++ opencv

我试图保存视频文件中的图像,但无法将任何图像保存在硬盘中。我编译了以下程序,没有错误。

#include <stdio.h>
#include <stdlib.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main(int argc, char* argv[]) {

    int c=1;
    IplImage* img=0;
    IplImage* small;
    IplImage* small=new IplImage(inputArray);
    char buffer[1000];
    CvCapture* cv_cap=cvCaptureFromFile("test.avi");
    cvNamedWindow("Video",CV_WINDOW_AUTOSIZE);
    while(1) {

        img=cvQueryFrame(cv_cap);
        cvShowImage("Video",img);
        small = cvCreateImage(cvSize(img->width/2,img->height/2), 8, 3);
        sprintf(buffer,"C:/image%u.jpg",c);


        c++;
        if (cvWaitKey(100)== 27) break;
    }

    cvDestroyWindow("Video");
    return 0;
}

我正在使用2.3.1 openCV库和Visual Studio 2010。 如何从视频文件中保存图像?


我也试过这段代码,上面的程序代码有点不对。请看下面的程序代码。在我添加下面的代码后,也出现了同样的问题。

   cvSaveImage(buffer,img);

更正的程序如下所示。请看这个并告诉我我做错了什么。但是没有编译错误。在我运行程序之后它没有保存任何图像。

  #include"stdafx.h"
  #include<cv.h>
  #include<highgui.h>
  #include<cxcore.h>


  int main(int argc, char* argv[]) {

  int c=1;
  IplImage* img=0;
  char buffer[1000];
  CvCapture* cv_cap=cvCaptureFromCAM(-1);
  cvNamedWindow("Video",CV_WINDOW_AUTOSIZE);
  while(1) {

  img=cvQueryFrame(cv_cap);
  cvShowImage("Video",img);
  sprintf(buffer,"D:/image%u.jpg",c);
  cvSaveImage(buffer,img);
  c++;
    if (cvWaitKey(100)== 27) break;
  }

  cvDestroyWindow("Video");
  return 0;
  }

你能告诉我如何保存图片。以上程序不保存任何图片。请给我你的建议。谢谢。

2 个答案:

答案 0 :(得分:0)

您忘记了实际保存图片:

cvSaveImage(buffer ,img);

此外,以下内容是多余的:

IplImage* small; // <-- you don't need this
IplImage* small=new IplImage(inputArray);

答案 1 :(得分:0)

不知道你是否解决了这个问题。如果没有,你可以使用imwrite(“test.jpg”,img);保存图像,

这是一个例子 -     而(1){

  img=cvQueryFrame(cv_cap);
  cvShowImage("Video",img);
  imwrite("test.jpg",img);
}