Opencv:按帧数读取视频并保存图片

import cv2

videoFile = ‘data/最强大脑.mp4‘
cap = cv2.VideoCapture(videoFile)
frameNum = 0
while (cap.isOpened()):
    ret, frame = cap.read()
    frameNum = frameNum + 1
    if frameNum % 2 == 0:  # 调整帧数
        cv2.imwrite(‘image/output/vieo1_‘ + str(frameNum) + ".jpg", frame)  # 保存图片
        cv2.namedWindow("resized", 0)  # 0可以改变窗口大小了
        # cv2.resizeWindow("resized", 640, 480) # 设置固定大小不能该,上面和一起使用
        cv2.imshow("resized", frame)  # 显示视频
        if cv2.waitKey(1) & 0xFF == ord(‘q‘):
            break
cap.release
cv2.destroyAllWindows()
 

原文地址:https://www.cnblogs.com/jumpkin1122/p/11509786.html

时间: 2024-11-09 21:13:56

Opencv:按帧数读取视频并保存图片的相关文章

Linux下安装opencv with-ffmpeg解决无法读取视频的问题

1. 编译安装ffmpeg 下载源码,执行 ./configure --disable-yasm --enbale-shared --prefix=/usr/local/ffmpeg 即可. 2. 下载opencv并设置config 下载源码,并 git checkout 3.1.0,也可以是其他版本 cmake -D WITH_CUDA=OFF -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/packages/opencv/i

matlab 读取视频文件和摄像头

一.视频的读取和显示 视频数据的读取要用到VideoReader这个函数,按照matlab软件中举的例子,基本流程是在用VideoReader建立一个obj后,采用read函数来读取一帧帧图像,最后用movie函数来放映视频.但是matlab自带的函数读取avi格式的视频时也只能读取那些原始格式的avi,比较局限性.其读取过程可以采用下面2种方法: 先读完,再显示. 即先将视频数据读取到内存的结构体中,然后直接从内存中拿数据来显示,这显示的视频看起来比较流畅,可是一开始把所有数据读入内存的过程所

opencv学习之路(2)、读取视频,读取摄像头

一.介绍 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. ①读取视频有两种方法: A. VideoCapture cap; cap.open("1.avi"); B. VideoCapture cap("1.avi"); ②循环显示每一帧: while(1) { Mat frame; //定义Mat变量,用来存储每一帧 cap>>frame; //读取当前帧方法一 //cap.read(frame); /

Opencv 读取视频,随播放滚动的视频条,canny检测。

实现视频条的拖动需要使用全局变量g_slider_position,和回调函数onTrackbarSlider(). 拖动条由函数cvCreateTrackbar()函数产生,具体调用为: 1 cvCreateTrackbar("position", 2 "Original", 3 &g_slider_position, 4 frames, 5 onTrackbarSlider); 6 } “position” 为拖动条名称,“Original”为显示窗口名

OpenCV读取视频和图像序列

在使用OpenCV时候,我们首先会做的是获取待处理的图像,这个图像可能来源于已存储的视频文件.也可能来源于实时的摄像头画面.或是某个文件夹下的一系列图片.或许你会觉得,这都是小菜一碟,因为我们学习OpenCV的第一步一般是学习如何加载和显示一幅图片.对于打开摄像头或是读取视频的程序,网上也是一抓一大把.如果你是初学者,不妨看一下我下面的总结,或许有你不曾注意到的. 对于图像或视频的加载.显示.窗口设置.工具条.图像合并为视频.视频分割成图像.打开视频或摄像头等操作的定义是放在OpenCV的hig

python 视频处理,提取视频相关帧,读取Excel

一共这几个模块: class videoReader 读取视频 class videoFramesExtractor(videoReader):继承了读取视频,主要是用来限制读取视频中的哪些帧,并保存. read_excel_single(excel_path,event_instance): 处理Excel中的数组,找到事件的帧数范围: Excel内容是这样的,需要的只是第二列的帧范围,另外第二列中的这些值还有重复的所以需要去除重复: 每一个范围,例如:23450:23461之内的帧要存放在一

Linux OpenCV读取视频失败,cvCreateFileCapture失败的解决

背景: 最近想在嵌入式平台上开发QT+Opencv,无料PC机上编写的OpenCV程序老是打不开视频. 开始提示:OpenCV Error: Bad argument (Array should be CvMat or IplImage) in cvGetSize 但是没有用错.考虑到可能没有打开视频,以作为cvGetSize的参数. 以前程序运行没有问题,最近电脑进行了一些FFMPEG/ZLIB等的交叉编译,就不能运行了. 解决方法: 网上搜索,发现是因为ffmpeg没有编译到opencv里.

在opencv下读取视频保存为图片

VideoCapture capture; capture.open("D:\\car.avi");//读取视频 对于视频下一帧的读取: capture>>frameImg;//读取视频流下一帧控制,字符重载 对于视频的图片保存 std::stringstream ss;//存储图片路径保存信息 ss<<"D:/output/image_"<<setfill('0')<<setw(3)<<(nCount-1

FFMPEG系列课程(二)读取视频帧

再来介绍下如何读取视频帧,打开视频参考前面的文章,首先需要创建一个帧的存放对象 AVPacket pkt; memset(&pkt, 0, sizeof(AVPacket)); 再通过 int err = av_read_frame(ic, &pkt); 读取帧数据,其中ic是之前打开的视频流句柄.读取视频帧后要注意一点av_read_frame会自动给视频帧分配空间,返回值0表示成功. 可以通过 av_packet_unref(&pkt);删除packet的控制,注意这里删除的不