opencv3 学习笔记(一)图像与视频的转换
来源:互联网 发布:炉石传说 for mac 编辑:程序博客网 时间:2024/05/21 15:31
刚开始接触opencv3,发现函数的用法太多,本身C++学的也不是很好,打算随手把学过的记录下来,方便以后查看
1.读取图像:Mat imread(const string& filename, int flags);
返回值为Mat对象
Mat类型需要记录图像的数据:
1).图像是灰度或彩色(这里姑且只考虑这两种)
2).图像数据的大小(图像的宽与高)
3).一个数据体:二维数组或是一维数组。
●Mat类:是用于保存图像以及其他矩阵数据的数据结构。默认情况下,其 尺寸为0,也可以指定初始尺寸,比如定义一个Mat类对象,就要写cv::Mat pic(320,640,cv::Scalar(100));
2.显示图像:void imshow(const string& winname, InputArray mat);
第一个参数,const string&类型的winname,填需要显示的窗口标识名称。
第二个参数,InputArray 类型的mat,填需要显示的图像。
3.将输出图像保存为文件:
bool imwrite(const string& filename,InputArray img, const vector& params=vector() );
第一个参数:保存后的文件名
第二个参数:要保存的Mat类型的图像数据
第三个参数:特定格式保存的参数编码,它有默认值vector(),所以一般情况下不需要填写
4.截取图像中的一部分:Reat类 Reat rect(a,b,c,d);
a,b 表示截取图片的左上角在原图的坐标。
c,d分别代表图片的长宽。
下面的代码是练习代码
/////////////////////////////////////// 隔一分钟保存一帧 // // 将连续帧保存为视频 // ////////////////////////////////////#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;int video_picture(string filename);void Image_To_Video(int m);int main(){ string video_name = "D://Libs//opencv310//opencv//sources//samples//data//768x576.avi"; int n; n = video_picture(video_name); //截取帧 Image_To_Video(n); //图像整合成视频 return(0);}int video_picture(string filename){ int i = 0; int j = 0; //读入视频 VideoCapture capture(filename); double rate = capture.get(CV_CAP_PROP_FPS); //获取视频帧率 //循环读取每一帧 while (1){ Mat frame; //Mat:存储每一帧的图像 capture >> frame; //读取当前帧 i++; if (i == 6*rate){ //10fps/s 1min->600fps i = 0; j++; //imshow("读取视频", frame); //显示当前帧 string name_1 = "D://video picture//"; string name_2 = to_string(j); string name_3 = ".jpg"; name_1 += name_2; name_1 += name_3; //图片存储路径及名字 if (!frame.empty()){ imwrite(name_1, frame);//截取当前帧并以图像的形式保存 waitKey(30); //延时30ms } if (frame.empty()) break; } } return j;}void Image_To_Video(int p_num){ char image_name[40]; string s_image_name; //初始化视频编写器 cv::VideoWriter writer; int isColor = 1; //true int frame_fps = 10; int frame_width = 768; int frame_height = 576; using namespace cv; string video_name = "D://video picture//hehe.avi"; //视频名字及路径 writer = VideoWriter(video_name, CV_FOURCC('X', 'V', 'I', 'D'), frame_fps, Size(frame_width, frame_height), isColor); cv::namedWindow("image to video", CV_WINDOW_AUTOSIZE); int i = 1; Mat img; while (i <= p_num) { sprintf(image_name, "%s%d%s", "D://video picture//", i++, ".jpg"); s_image_name = image_name; img = imread(s_image_name);//读入图片 if (!img.data) //判断图片调入是否成功 { cout << "Could not load image file...\n" << endl; } if (!img.empty()) //非空判断 imshow("image to video", img); //写入 writer.write(img); if (cv::waitKey(30) == 27 || i == 56) //ESC:ASCⅡ码27 { cout << "按下ESC键" << endl; break; } }}
- opencv3 学习笔记(一)图像与视频的转换
- opencv3学习笔记(二)图像的截图,旋转与大小的变化
- Opencv3.0-python的那些事儿:(一)、Opencv的图像和视频处理基本用法
- 《OpenCV3编程入门》学习笔记八:图像轮廓与分割
- Opencv3编程入门学习笔记(一)
- opencv3.0学习笔记一:boxFilter(...)
- opencv3学习笔记1--图像的基本操作
- 图像与视频的相互转换
- python3.6.3+opencv3.3.0学习笔记六--存储视频和图像
- OpenCV学习笔记之(二):图像的基本操作(VS2010+OpenCV3.0)
- Opencv3编程入门学习笔记(三)之访问图像像素的三种方法
- OpenCV3学习(一)
- 图像与视频互相转换
- MATLAB 视频与图像转换
- OpenCV学习笔记(08):OpenCV3.2版本下的Mat和IplImage相互转换
- opencv3笔记一 滑动条的创建与使用
- c#与图像处理学习笔记(一)
- 计算机视觉与图像处理学习笔记(一)
- springmvc hibernate-validator
- springmvc文件上传
- Mysql学习笔记二十二——常用函数
- 那些名为「 感动」的瞬间
- 使用自定义配置文件
- opencv3 学习笔记(一)图像与视频的转换
- 随机值配置
- 字符串操作函数解析
- 分布式学习笔记1通过Java自己实现简单的HTTP RPC框架
- JMeter学习笔记5-如何添加Assertion
- 排列数与组合数非零最低位 POJ 1150 POJ 3406
- Java关键字final、static使用总结
- 外部配置-命令行参数配置
- POJ 1657-Distance on Chessboard(BFS-多种方向不限步数)