Python cv2 播Video

Python cv2 播Video
如有误,请指正。
VideoCapture Video file 请自选

import cv2
# open video file
cap = cv2.VideoCapture('rain.mp4')
#--- video information 
frame_width  = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
FPS = int(cap.get(cv2.CAP_PROP_FPS))
frame_count  = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(f'width {frame_width} height {frame_height}')
print(f'FPS: {FPS}  frame_count {frame_count}')
#--- setup window for show 
cv2.namedWindow('video',cv2.WINDOW_KEEPRATIO) 
cv2.resizeWindow('video', int(frame_width/3), int(frame_height/3))
cv2.moveWindow('video',300,200)

# read frame by frame
while(True):
    ret, frame = cap.read()
    cv2.imshow('video',frame)
    #播灰阶 
    #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    #cv2.imshow('video',gray)    
    #waitKey 单位msec  1000msec = 1sec
    #FPS=24 表示1sec播24张,所以1000msec/24=25msec
    #每张可停格 25msec=waitKey(25) 可设定20~25之间,肉眼无法区分快慢
    #Escape key to leave 
    if cv2.waitKey(20)== 27:
        break
#--- ending  
cap.release()
cv2.destroyAllWindows()
    

<<:  [C#] 取得证交所上市及上柜的股票及ETF清单(附范例)

>>:  威胁建模-DREAD

【从零开始的Swift开发心路历程-Day4】Xcode介面基础介绍

昨天我们提到红色框框里面的东西,今天就来根据他们的作用进行简单介绍吧! AppDelegate.sw...

[Day30] 30 天 Java 从陌生到更陌生

终於来到最後一天了!!还记得这个教程的名字为「30 天 Java 从陌生到更陌生」吗? 为什麽会「更...

Day.13 Crash Recovery - InnoDB 架构 -> MYSQL 二阶段提交(2PC) _1

今天开始的主题有关於MYSQL的crash-safe能力(二阶段提交),如何保证服务在任何时间发生...

javascript变数与运算子3

接下来介绍比较运算值,也是用程序码跟注解来呈现 结果会以布林true跟false显示 ...

[Day16] 传值、传址 or call by sharing

传值或传址? 前面两篇所讲的,基本型别是传值,物件型别是传址,但同时也存在例外,举下例,如果对 ob...