这个opencv写入avi程序,我另外加入的两行想看看有没有数据读出.但没有数据.不知道那里有问题请指点指点?
#include"stdafx.h"#include"cv.h"#include"highgui.h"intmain(intargc,char**argv){CvCapt...
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int main(int argc, char** argv)
{
CvCapture *capture = cvCreateFileCapture( "C:\\Users\\sl\\Documents\\Visual Studio 2005\\Projects\\test\\test\\12.avi" );
if(!capture)
{
return -1;
}
double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
CvSize size = cvSize(
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT) );
CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('M','J','P','G'),fps,size);
IplImage* logpolar_frame = cvCreateImage(size,IPL_DEPTH_8U,3);
cvNamedWindow("haha");//我另外加入的
IplImage *bgr_frame;
while( (bgr_frame=cvQueryFrame(capture)) != NULL )
{
bgr_frame=cvQueryFrame(capture);//Init the video read
cvLogPolar( bgr_frame, logpolar_frame,cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );
cvShowImage("haha",bgr_frame);//是我另外加入的
cvWriteFrame( writer, logpolar_frame );
}
cvReleaseVideoWriter( &writer );
cvReleaseImage( &logpolar_frame );
cvReleaseCapture( &capture );
cvDestroyWindow("show");
return(0);
} 展开
#include "cv.h"
#include "highgui.h"
int main(int argc, char** argv)
{
CvCapture *capture = cvCreateFileCapture( "C:\\Users\\sl\\Documents\\Visual Studio 2005\\Projects\\test\\test\\12.avi" );
if(!capture)
{
return -1;
}
double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
CvSize size = cvSize(
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT) );
CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('M','J','P','G'),fps,size);
IplImage* logpolar_frame = cvCreateImage(size,IPL_DEPTH_8U,3);
cvNamedWindow("haha");//我另外加入的
IplImage *bgr_frame;
while( (bgr_frame=cvQueryFrame(capture)) != NULL )
{
bgr_frame=cvQueryFrame(capture);//Init the video read
cvLogPolar( bgr_frame, logpolar_frame,cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );
cvShowImage("haha",bgr_frame);//是我另外加入的
cvWriteFrame( writer, logpolar_frame );
}
cvReleaseVideoWriter( &writer );
cvReleaseImage( &logpolar_frame );
cvReleaseCapture( &capture );
cvDestroyWindow("show");
return(0);
} 展开
2个回答
展开全部
我不知道你说的没有数据读出是什么意思,你的问题没有说清楚。
不过可以告诉你有两个地方需要修改,
while( (bgr_frame=cvQueryFrame(capture)) != NULL )
{
bgr_frame=cvQueryFrame(capture);//Init the video read
这里,你看你的while中已经有这个bgr_frame=cvQueryFrame(capture)操作了,不用再重复该语句,这样做的结果是每隔一帧处理一帧,而不是一次处理每帧图像了。
另外你的销毁窗口语句有错误,你应该是从别的地方直接复制过来的吧,你明明定义的窗口名字是“haha”,cvNamedWindow("haha");//我另外加入的
怎么销毁的时候是“show”呢?cvDestroyWindow("show");
如果你只是加了显示图像的语句,不会有什么错误,肯定能正常显示你读取的图像的。
不过可以告诉你有两个地方需要修改,
while( (bgr_frame=cvQueryFrame(capture)) != NULL )
{
bgr_frame=cvQueryFrame(capture);//Init the video read
这里,你看你的while中已经有这个bgr_frame=cvQueryFrame(capture)操作了,不用再重复该语句,这样做的结果是每隔一帧处理一帧,而不是一次处理每帧图像了。
另外你的销毁窗口语句有错误,你应该是从别的地方直接复制过来的吧,你明明定义的窗口名字是“haha”,cvNamedWindow("haha");//我另外加入的
怎么销毁的时候是“show”呢?cvDestroyWindow("show");
如果你只是加了显示图像的语句,不会有什么错误,肯定能正常显示你读取的图像的。
2010-11-18
展开全部
CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('M','J','P','G'),fps,size);
改一下
改为:CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('x','i','v','d'),fps,size);
改一下
改为:CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('x','i','v','d'),fps,size);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询