opencv(7)
2016-02-01 20:44
316 查看
#include <cv.h>
#include <highgui.h>
//****************写入avi视频文件*************
int main()
{
CvCapture * capture = 0;//创建结构体
capture = cvCreateFileCapture("D:\\op\\man.avi");//原始视频地址
if (!capture){ return -1; }//读取失败
IplImage *bgr_img = cvQueryFrame(capture);//读取帧
double fps = cvGetCaptureProperty(capture,
CV_CAP_PROP_FPS);//获取capture的fps数据
CvSize imgsize = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));//获取capture的size信息
CvVideoWriter * writer = cvCreateVideoWriter("D:\\op\\me2.avi",//输出视频被存放的地址
CV_FOURCC('M','J','P','G'),//指定编码格式
fps,//播放的帧率
imgsize);//视频图像的大小
IplImage * logpolar_image = cvCreateImage(imgsize, IPL_DEPTH_8U, 3);//创建转换后的结构体
cvNamedWindow("test_demo7", CV_WINDOW_AUTOSIZE);
while ((bgr_img = cvQueryFrame(capture)) != NULL)//若读取帧不为空
{
cvLogPolar(bgr_img,//原视频image结构体
logpolar_image, //转换后的image结构体
cvPoint2D32f(bgr_img->width / 2, bgr_img->height / 2),//极坐标中心
40,//缩放比例40
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);//转换成对应极坐标的形式;双线性插值+空白部分填充黑色
cvWriteFrame(writer, logpolar_image);//将转换后的logpolar_image写入视频writer
cvShowImage("test_demo7", logpolar_image);//输出图像确实长得很奇怪
char c = cvWaitKey(33);
if (c == 27) break;
}
cvReleaseVideoWriter(&writer);//释放writer
//cvReleaseImage(&bgr_img);bgr_img它不需要释放,否则会出现报错。原因:bgr_img使用的是通过cvqueryframe的capture的内存。当capture被释放后每一帧图像所对应的内存都会被释放。
cvReleaseImage(&logpolar_image);
cvReleaseCapture(&capture);
return (0);
}
#include <highgui.h>
//****************写入avi视频文件*************
int main()
{
CvCapture * capture = 0;//创建结构体
capture = cvCreateFileCapture("D:\\op\\man.avi");//原始视频地址
if (!capture){ return -1; }//读取失败
IplImage *bgr_img = cvQueryFrame(capture);//读取帧
double fps = cvGetCaptureProperty(capture,
CV_CAP_PROP_FPS);//获取capture的fps数据
CvSize imgsize = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));//获取capture的size信息
CvVideoWriter * writer = cvCreateVideoWriter("D:\\op\\me2.avi",//输出视频被存放的地址
CV_FOURCC('M','J','P','G'),//指定编码格式
fps,//播放的帧率
imgsize);//视频图像的大小
IplImage * logpolar_image = cvCreateImage(imgsize, IPL_DEPTH_8U, 3);//创建转换后的结构体
cvNamedWindow("test_demo7", CV_WINDOW_AUTOSIZE);
while ((bgr_img = cvQueryFrame(capture)) != NULL)//若读取帧不为空
{
cvLogPolar(bgr_img,//原视频image结构体
logpolar_image, //转换后的image结构体
cvPoint2D32f(bgr_img->width / 2, bgr_img->height / 2),//极坐标中心
40,//缩放比例40
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);//转换成对应极坐标的形式;双线性插值+空白部分填充黑色
cvWriteFrame(writer, logpolar_image);//将转换后的logpolar_image写入视频writer
cvShowImage("test_demo7", logpolar_image);//输出图像确实长得很奇怪
char c = cvWaitKey(33);
if (c == 27) break;
}
cvReleaseVideoWriter(&writer);//释放writer
//cvReleaseImage(&bgr_img);bgr_img它不需要释放,否则会出现报错。原因:bgr_img使用的是通过cvqueryframe的capture的内存。当capture被释放后每一帧图像所对应的内存都会被释放。
cvReleaseImage(&logpolar_image);
cvReleaseCapture(&capture);
return (0);
}
相关文章推荐
- linux 命令
- codeforces 621B Wet Shark and Bishops
- Linux虚拟化之XenServer的安装与配置管理
- linux if 命令判断条件总结
- apache用户认证、默认虚拟主机以及域名跳转
- Get ADUser Properties
- Shell脚本小记
- eclipse 启动 tomcat 应用,报告 class-path 下的某个 properties 文件找不到
- (1)架构和目录结构
- dirname命令介绍-使用dirname在shell脚本中获取当前脚本文件所在的绝对路径
- 解决远程登陆Linux误按ctrl+s锁屏
- shell编程-告警系统
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux基本的快捷键
- xshell下bpython使用退格键的问题
- Linux线程 -- 互斥锁实践
- Linux服务器内外网端口转发映射
- DevStack部署Openstack环境
- Calico Docker整合使用
- 图像的简单copyPaste实现