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

doesn't save any image.. when saving frames of a video

本文关键字:保存 视频 图像 任何      更新时间:2023-10-16

可能重复:
无法使用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;
}

你能告诉我如何保存图像吗?上面的程序不保存任何图像。请给我你的建议。谢谢。

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 );

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

希望这能奏效。

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

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

我将在这些OpenCV帖子中第100次这样说:通过检查调用的返回来安全地代码。cvSaveImage()保存图像失败返回0:

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

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