新手做opencv写入视频的时候遇到一个问题,求助!
在进行运行的过程中,运行到中间的时候,就报错!
他的提示是:Unhandled exception at 0x75284118 in 写入视频.exe: Microsoft C++ exception: cv::Exception at memory location 0x0049F1C0.
调回来看命令窗口,显示的是:OpenCV Error: Insufficient memory (Failed to allocate 61968384 bytes) in cv:ut of MenoryError
网上百度了一下,大概是说内存不够,让在64位环境下运行试试,但是我电脑是64位的啊,不知道这个怎么处理!求助各位!
代码如下:
#include<iostream>
#include"cv.h"
#include"highgui.h"
#include"cvaux.h"
#include<stdlib.h>
#include<stdio.h>
int main(int argc, char* argv[])
{
CvSize size = cvSize(480, 360);//创建大小为480*360的框
double fps = 10;//帧率设为10
CvVideoWriter* writer = cvCreateVideoWriter("F:\\BaiduYunDownload\\视频输出\\out.avi",
-1, fps, size);//CV_FOURCC('X', 'V', 'I', 'D');//cvCreateVideoWriter (const char* filename, int fourcc, double fps,
//CvSize frame_size, int is_color=1 );
//filename:指定新建视频的文件名字。
//fourcc:视频压缩的编码格式,目前有多种流行的编解码格式,
//但无论采用哪种格式,都必须确认自己的电脑上安装了这种格式(编解码器的安装是独立于opencv的)。
//fps:帧率,在第4集中有介绍。
//frame_size : 视频帧的大小。
// is_color : 如果非零,编 码器将希望得到彩色帧并进行编码 ,否则,是灰度帧
int image_id = 0;//图片编号为0
char filename[256];
sprintf(filename, "D:\\图像处理代码\\写入视频文件\\写入视频\\Camera\\%d.jpg", image_id);//显示图像
IplImage* src = cvLoadImage(filename);//载入图片
if (!src)
{
return 0;
}
IplImage* src_resize = cvCreateImage(size, 8, 3);//创建大小为size,8bit,3通道
cvNamedWindow("avi");//创建框
while (src)
{
cvShowImage("avi", src_resize);//显示
cvWaitKey(1);//Key:如果key的值是大于0的数,那么该函数的功能是,
//在此处暂停key毫秒。如果是小于等于0的数,那么,该函数是在等待用户的按键输入。
cvResize(src, src_resize);//覆盖掉
cvWriteFrame(writer, src_resize);//写入新一帧
image_id++;
sprintf(filename, "D:\\图像处理代码\\写入视频文件\\写入视频\\Camera\\%d.jpg", image_id);
src = cvLoadImage(filename);
}
cvReleaseVideoWriter(&writer);//释放指针
cvReleaseImage(&src_resize);//释放指针
return 0;
}