我试图保存视频文件中的图像,但无法将任何图像保存在硬盘中。我编译了以下程序,没有错误。
#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;
}
你能告诉我如何保存图片。以上程序不保存任何图片。请给我你的建议。谢谢。
答案 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);
}