在保存视频帧时不保存任何图像

时间:2012-04-01 17:33:45

标签: c++ visual-c++ opencv

  

可能重复:
  Cant save image using OpenCV

我已经尝试过以下代码,请看到这个并告诉我我的错误。但是没有编译错误。在我运行程序后它没有保存任何图像。

#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;
}

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

3 个答案:

答案 0 :(得分:1)

IplImage *destination = cvCreateImage(cvSize( img->width, img->height ), IPL_DEPTH_8U,1);
cvCvtColor( img, destination, CV_RGB2GRAY );
cvSaveImage( "C:/Users/SP/Desktop/sample.jpg", destination );

它转换为灰色图像;根据需要使用它。

希望这有效。

答案 1 :(得分:0)

可能是权限问题,只有管理员可以写入顶级文件夹

尝试制作子目录并写入例如sprintf(buffer,"D:/data/image%u.jpg",c);

答案 2 :(得分:0)

我会在这些OpenCV帖子中第100次这样说:代码安全地通过检查呼叫的返回。无法保存图像时cvSaveImage()返回0:

if (!(cvSaveImage(buffer,img))
{
    std::cout << "!!! Failed to save image" << std::endl;
}

如果您看到显示的错误消息,则应检查目标目录是否存在,以及您的用户是否有权在其中创建文件。