OpenCV 图片与视频的相互转换
2017-11-20 14:04
489 查看
参考:http://blog.csdn.net/xingchenbingbuyu/article/details/73132174
如果是要打开视频文件而不是摄像头,只需要像下面这样:
而视频转成图片也就是那么简单的一句cap >> frame;
各参数含义如下:
filename: 输出视频文件的名称
fourcc:4-character code of codec的缩写,四个字符用来表示压缩帧的编解码。
fps:帧率,我猜是frame per second的缩写。
frameSize:每帧图片的大小
isColor: 如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)
第二个参数,OpenCV提供的格式是未经过压缩的,目前支持的格式如下:
1、视频转图片
C++
#include<opencv2\opencv.hpp> using namespace cv; int main() { //打开默认摄像头 VideoCapture cap(0); if (!cap.isOpened()) { return -1; } Mat frame; // 按Q键退出时,键盘需要调为英文模式 while(waitKey(30) != 'q') { // 通过流操作符把视频转化为一帧帧图片 cap >> frame; // Do something here ! imshow("video", frame); } return 0; }
如果是要打开视频文件而不是摄像头,只需要像下面这样:
VideoCapture cap("E:\\我的视频\\视频.mp4");
而视频转成图片也就是那么简单的一句cap >> frame;
Python代码
import cv2 import numpy cap = cv2.VideoCapture(0) if not cap.isOpened():exit(-1) while cv2.waitKey(30)!=ord('q'): retval, image = cap.read() if not retval:break cv2.imshow("video",image) cap.release()
2、图片转视频
VideoWriter构造函数如下所示:VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true)
各参数含义如下:
filename: 输出视频文件的名称
fourcc:4-character code of codec的缩写,四个字符用来表示压缩帧的编解码。
fps:帧率,我猜是frame per second的缩写。
frameSize:每帧图片的大小
isColor: 如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)
第二个参数,OpenCV提供的格式是未经过压缩的,目前支持的格式如下:
CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’) = MPEG-1 codec CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’) = motion-jpeg codec CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec
#include<opencv2\opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main() { // 构造一个VideoWriter VideoWriter video("test.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480)); // 从一个文件夹下读取多张jpg图片 String pattern = "G:\\temp_picture\\*.jpg"; vector<String> fn; glob(pattern, fn, false); size_t count = fn.size(); for (size_t i = 0; i < count; i++) { Mat image = imread(fn[i]); // 这个大小与VideoWriter构造函数中的大小一致。 resize(image, image, Size(640, 480)); // 流操作符,把图片传入视频 video << image; } cout << "处理完毕!" << endl; // 处理完之后会在得到一个名为test.avi的视频文件。 }
python
# encoding: UTF-8 import glob as gb import cv2 img_path = gb.glob("G:\\temp_picture\\*.jpg") videoWriter = cv2.VideoWriter('test.mp4', cv2.VideoWriter_fourcc(*'MJPG'), 25, (640,480)) # videoWriter = cv2.VideoWriter('test.avi', cv2.VideoWriter_fourcc(*'XVID'), 25, (640,480)) for path in img_path: img = cv2.imread(path) img = cv2.resize(img,(640,480)) videoWriter.write(img)
相关文章推荐
- OpenCV视频与图片序列相互转换
- opencv,图片视频相互转换
- OpenCV 视频与图片序列相互转换 VideoWriter生成视频流
- OpenCV 视频与图片序列相互转换
- OpenCV 视频与图片序列相互转换 VideoWriter生成视频流
- OpenCV+C++ 视频图片相互转换
- OpenCV|图片与视频的相互转换(C++&Python)
- OpenCV 视频与图片序列相互转换
- OpenCV 视频与图片序列相互转换
- OpenCV视频读取播放,视频转换为图片
- opencv图片序列转换成视频
- [opencv] 读写视频, 将连续图片转换为视频
- 视频和图片的相互转换
- OpenCV视频转换为图片代码
- OpenCV视频读取播放,视频转换为图片
- opencv:批量读取一个文件夹下的图片,并转换成视频
- 视频和图片的相互转换
- OpenCV——将图片转换成视频
- opencv:批量读取一个文件夹下的图片,并转换成视频
- qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题