使用OpenCV无法保存图像
我试图从视频文件保存图像,但它无法保存我的硬盘驱动器中的任何图像。我编译了以下程序,没有错误。使用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 我如何保存图像从一个视频文件?
我自己也尝试这个代码,上面的程序代码是什么wrong.please看到下面的程序code.After我添加以下代码,也出现了同样的问题。
cvSaveImage(buffer,img);
修正程序下显示。请到看到这一点,告诉我,我所做的wrong.but没有编译error.after我运行程序它不保存任何图像。
#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;
}
你能告诉我如何保存图像。上面的程序不保存任何图像。请给我你的建议。谢谢。
你忘了真正保存图像:
cvSaveImage(buffer ,img);
此外,以下是多余的:
IplImage* small; // <-- you don't need this
IplImage* small=new IplImage(inputArray);
我是新的openCV,我也加上了上面的代码..但仍然有同样的问题。请参见我下面更正的程序。 ..谢谢你的帮助.. – NimPointer 2012-04-01 16:23:56
@NimPointer现在是时候接受答案了 – Eregrith 2012-04-16 12:47:10
不知道,如果你解决了这个问题,或者没有。如果没有,你可以使用imwrite(“test.jpg”,img);保存图像,
这里是一个示例 - 而(1){
img=cvQueryFrame(cv_cap);
cvShowImage("Video",img);
imwrite("test.jpg",img);
}
在这段代码是你想救它?看起来你没有对包含文件名的'buffer'做任何事情。 – WeaselFox 2012-04-01 08:04:49
另外,如果您使用C++,为什么要使用旧的C接口? – etarion 2012-04-01 09:39:42
可能重复的[不保存任何图像..当保存视频帧](http://*.com/questions/9966600/doesnt-save-any-image-when-saving-frames-of-a -video) – karlphillip 2012-04-01 20:12:40