C++ /Python 将视频中的片段转为图片
- 配置OpenCV :项目名称->右击->属性
VC++目录 包含目录 放 ...\build\include ...\build\include\opencv ...\build\include\opencv2
库目录:...\\build\x64\vc14\lib (VS2015是vc14)
链接器->输入 附加依赖项: opencv_world330.lib
opencv_world330d.lib弹出错误的话:由于找不到opencv_world330d.dll,无法继续执行代码。 opencv_ffmpeg330_64.dll、opencv_world330.dll
opencv_world330d.dll放入C:\Windows\System32中 -
-
C++版本
-
#include <iostream> #include <opencv2/opencv.hpp> #include <vector> using namespace std; using namespace cv; int main() { VideoCapture cap("test.mp4"); double fps = cap.get(CV_CAP_PROP_FPS); int width = cap.get(CAP_PROP_FRAME_WIDTH); int height = cap.get(CAP_PROP_FRAME_HEIGHT); cout << fps << endl; cout << width << endl; cout << height << endl; cap.set(0, 2 * 1000); //设置起始时间 单位ms long pos = cap.get(CAP_PROP_POS_FRAMES);// 获得帧位置 int frameToStop = 120; // 设置帧数 bool isOpened = cap.isOpened(); int i = 0; Mat frame; string fileName; char temp_file[5]; while (isOpened && pos <= frameToStop) { i = i + 1; bool flag = cap.read(frame); sprintf_s(temp_file, "%04d", i); fileName = temp_file; fileName = fileName + ".jpg"; cout << fileName << endl; if (flag == true ) { imwrite(fileName, frame); pos = cap.get(CAP_PROP_POS_FRAMES);// 获得帧位置 waitKey(1); } else { break; } } cap.release(); cout << "end" << endl; system("pause"); return 0; }
Python版本
import cv2 as cv import numpy as np import matplotlib.pyplot as plt '''获取视频信息''' cap = cv.VideoCapture('test.mp4') #加载视频 fps = cap.get(cv.CAP_PROP_FPS) # 获取帧率 width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH)) # 获取宽度 height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT)) # 获取高度 print(fps,width,height) '''视频转图片''' cap=cv.VideoCapture('test.mp4') #加载视频 cap.set(0, 3*1000) isOpened=cap.isOpened() i=0 while(isOpened): i=i+1 flag,frame=cap.read() fileName = '%03d'%i+".jpg" print(fileName) if flag == True : cv.imwrite('%03d'%i+".jpg",frame) # 命名 图片 图片质量,此处文件名必须以图片格式结尾命名 cv.waitKey(1) else: break cap.release() print('end')

浙公网安备 33010602011771号