如何使用python?opencv库玩转视频帧率


这篇“如何使用pythonopencv库玩转视频帧率”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用pythonopencv库玩转视频帧率”文章吧。

    需求背景

    在很多时候我们需要抽取视频的某一帧做一些分析或修改等;比如笔者需求就是判断一个人在该视频中出现的频率,以判断他是否是这段视频的主角;

    关于opencv

    OpenCV 是 Intel 开源计算机视觉库 puter Version) 。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。

    OpenCV 拥有包括 300 多个 C 函数的跨平台的中、高层 API 。它不依赖于其它的外部库 —— 尽管也可以使用某些外部库。 OpenCV 对非商业应用和商业应用都是免费 的

    。同时 OpenCV 提供了对硬件的访问,可以直接访问摄像头,并且 opencv 还提供了一个简单的 GUI(graphics user interface) 系统 :highgui 。 我们就通过 OpenCV 提供的一些方法来构造出这个人脸检测 ( face detection ) 程序来。

    安装opencv

    pip install opencv-python

    用opencv按一定间隔截取视频帧,并保存为图片。

    这个例子使用python编程:

    代码:

    #-*-coding:utf8-*-importcv2importosimportshutildefVideoExtract(filename,count=600):''':paramfilename:视频文件路径:paramcount:保存图片的帧率间隔:return:'''#保存图片的路径savedpath=filename.split('.')[0]+'/'isExists=os.path.exists(savedpath)ifnotisExists:os.makedirs(savedpath)print('pathof%sisbuild'%(savedpath))else:shutil.rmtree(savedpath)os.makedirs(savedpath)print('pathof%salreadyexistandrebuild'%(savedpath))#开始读视频videoCapture=cv2.VideoCapture(filename)i=0j=0whileTrue:success,frame=videoCapture.read()i+=1if(i%count==0):#保存图片j+=1savedname=filename.split('.')[0]+'_'+str(j)+'_'+str(i)+'.jpg'cv2.imwrite(savedpath+savedname,frame)print('imageof%sissaved'%(savedname))ifnotsuccess:break

    运行完成后在生成的图片文件夹中会写入很多图片,也就是我们刚刚每个count帧抽出的画面

    根据这个抽帧情况来看该视频主角应该就是TRUMP了;

    抽帧之前当然要做一些视频属性的判断,如视频时长、视频大小等

    cap=cv2.VideoCapture(video_name)#帧率fps=int(round(cap.get(cv2.CAP_PROP_FPS)))#分辨率-宽度width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#分辨率-高度height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#总帧数frame_counter=int(cap.get(cv2.CAP_PROP_FRAME_COUNT))cap.release()cv2.destroyAllWindows()#时长,单位sduration=frame_counter/fps

    opencv-python获取视频相关信息

    以下是opencv-python可以获取视频的相关信息,可以通过从0开始的序号获取

    CV_CAP_PROP_POS_MSEC 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。

    CV_CAP_PROP_POS_FRAMES 接下来要解码/捕获的帧的基于0的索引。

    CV_CAP_PROP_POS_AVI_RATIO 视频文件的相对位置:0 - 电影的开始,1 - 电影的结尾。

    CV_CAP_PROP_FRAME_WIDTH 视频流中帧的宽度。

    CV_CAP_PROP_FRAME_HEIGHT 视频流中帧的高度。

    CV_CAP_PROP_FPS 帧速率。

    CV_CAP_PROP_FOURCC 编解码器的4字符代码。

    CV_CAP_PROP_FRAME_COUNT 视频文件中的帧数。

    CV_CAP_PROP_FORMAT 返回的Mat对象的格式 retrieve() 。

    CV_CAP_PROP_MODE 指示当前捕获模式的特定于后端的值。

    CV_CAP_PROP_BRIGHTNESS 图像的亮度(仅适用于相机)。

    CV_CAP_PROP_CONTRAST 图像对比度(仅适用于相机)。

    CV_CAP_PROP_SATURATION 图像的饱和度(仅适用于相机)。

    CV_CAP_PROP_HUE 图像的色调(仅适用于相机)。

    CV_CAP_PROP_GAIN 图像的增益(仅适用于相机)。

    CV_CAP_PROP_EXPOSURE 曝光(仅适用于相机)。

    CV_CAP_PROP_CONVERT_RGB 布尔标志,指示是否应将图像转换为RGB。

    CV_CAP_PROP_WHITE_BALANCE_U 白平衡设置的U值(注意:目前仅支持DC1394 v 2.x后端)

    CV_CAP_PROP_WHITE_BALANCE_V 白平衡设置的V值(注意:目前仅支持DC1394 v 2.x后端)

    CV_CAP_PROP_RECTIFICATION 立体摄像机的整流标志(注意:目前仅支持DC1394 v 2.x后端)

    CV_CAP_PROP_ISO_SPEED摄像机 的ISO速度(注意:目前仅支持DC1394 v 2.x后端)

    CV_CAP_PROP_BUFFERSIZE 存储在内部缓冲存储器中的帧数(注意:目前仅支持DC1394 v 2.x后端)

    以上就是关于“如何使用pythonopencv库玩转视频帧率”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注主机评测网行业资讯频道。


    上一篇:Android如何实现按钮点击事件

    下一篇:android中的adb命令怎么用


    Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
    测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
    温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

    热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器