首页 > 其他分享 >使用OpenCV看视频

使用OpenCV看视频

时间:2023-12-13 23:44:21浏览次数:33  
标签:视频 get int frame cv2 delay OpenCV video 使用

import cv2

# video = cv2.VideoCapture("rtsp://192.168.0.200:554/av0_0")
video = cv2.VideoCapture("fire.mp4")
# 获取视频帧数
frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
# 获取fps,每秒传输帧数(Frames per second)
fps = int(round(video.get(cv2.CAP_PROP_FPS)))
# 分辨率-宽度
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 分辨率-高度
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(f'视频帧数:{frame_count}')
print(f'FPS:{fps}')
print(f'Width:{width}')
print(f'Height:{height}')

# delay表示延迟多少毫秒进入下一帧
delay = int(1000 / fps)
while video.isOpened():
    # ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame是每一帧的图像,是个三维矩阵。
    ret, frame = video.read()
    if frame is None:
        break
    if ret == True:
        cv2.imshow("result", frame)
    # waitKey(delay):表示一帧等待delay毫秒在进入下一帧,期间如果有按键按下返回的值就是按下按键的ASCII值; 27 = esc; & 0xFF只是为了排除键盘上其他按键的干扰
    if cv2.waitKey(delay) & 0xFF == 27:
        break

# 释放视频
video.release()
cv2.destroyAllWindows()

标签:视频,get,int,frame,cv2,delay,OpenCV,video,使用
From: https://www.cnblogs.com/smalldong/p/17900215.html

相关文章

  • Android MaterialButtonToggleGroup使用
    原文地址:AndroidMaterialButtonToggleGroup使用-Stars-One的杂货小窝觉得单选框不好看,发现了一个Material里的单选按钮组,感觉UI还不错,记下使用使用效果:使用前,得看看是否有material的依赖,如implementation'com.google.android.material:material:1.4.0'PS:......
  • [转][C#][WPF]原生使用 INotifyPropertyChanged
    在上一篇基础上,我们添加对字段的绑定效果:界面添加:<TextBoxText="{BindingName}"Width="120"Height="31"/>在 MainWindowModel里添加:publicclassMainWindowModel:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerProper......
  • [C#] 使用 NAudio 实现音频可视化
    原文:[C#]使用NAudio实现音频可视化-SlimeNull-博客园(cnblogs.com)预览:捕捉声卡输出:实现音频可视化,第一步就是获得音频采样,这里我们选择使用计算机正在播放的音频作为采样源进行处理:NAudio中,可以借助WasapiLoopbackCapture来进行捕捉:WasapiLoopbackCa......
  • [转][C#][WPF]原生使用 ICommand
    传参这里参考:https://www.cnblogs.com/zhlziliaoku/p/5867556.html界面上添加一个按钮 <ButtonContent="点击"Width="120"Height="31"Command="{BindingshowCommand}"CommandParameter="{BindingRelativeSource={RelativeSourcese......
  • 使用java调用Python脚本
    通过使用java中的ProcessBuilder类,可以实现在java代码中调用外部的python代码的功能,以下为具体代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassJavaCallPython{publicstaticvoidmain(String[]args)......
  • bootstraptable 全事件 触发事件 表格事件及fastadmin 的使用方法案例
     Option事件jQuery事件参数描述onAllall.bs.tablename,args所有的事件都会触发该事件,参数包括:name:事件名,args:事件的参数。onClickRowclick-row.bs.tablerow,$element当用户点击某一行的时候触发,参数包括:row:点击行的数据,$element:tr元素,field:点击列的field......
  • [转]cryptoJs DES_CBC_Pkcs7 转成 Java(对称加密早期协议"DES"现已不安全,仅用于老项
    原文地址:cryptoJsDES_CBC_Pkcs7转成Java-唯学而知-博客园前端DES加密:importcryptoJsfrom'crypto-js';//DES加密functionencrypt(message,key,iv){//字符串转16进制constkeyHex=cryptoJs.enc.Utf8.parse(key);constivHex=cryptoJs.enc.U......
  • 如何判断lib和dll是32位还是64位?答案是使用微软的dumpbin工具,后面讲了如何使用gcc生成
    为什么我会考虑这个问题呢?因为我在使用java去调用一个c的lib库的时候,弹出以下警告:D:\work\ideaworkpaces\jdk21Test001\src\main\java\lib\hello.lib:%1不是有效的Win32应用程序。atjava.base/jdk.internal.loader.NativeLibraries.load(NativeMethod)然后我就在想是不是......
  • 【Azure Key Vault】在Alteryx中使用Azure Key Vault存储账号和密码并实现无交互登录
    问题描述:需要在Alteryx中使用AzureKeyVault,Alteryx能将数据发布到Tableau,需要输入账号和密码,使用AzureKeyVault来替换这个输入账号和密码的过程,是否可以在alteryx中实现呢? 问题解答在AzureKeyVault的资料中,没有找到针对Alteryx的解决方案。但是AlteryxDataConnection......
  • 【Azure Key Vault】在Alteryx中使用Azure Key Vault存储账号和密码并实现无交互登录
    问题描述:需要在Alteryx中使用AzureKeyVault,Alteryx能将数据发布到Tableau,需要输入账号和密码,使用AzureKeyVault来替换这个输入账号和密码的过程,是否可以在alteryx中实现呢? 问题解答在AzureKeyVault的资料中,没有找到针对Alteryx的解决方案。但是AlteryxDataConnec......