基於python + opencv的影片播放調節功能
import numpy as np
import cv2
import time
start_brightness = 0.1
count_keyu = 0
count_keyd = 0
count_keyz = 0
count_keyj = 0
delay_time = 0
# ——————————————————————————————播放影片——————————————————————
# ————————新增自己的影片播放路徑———————————
video_path="D:/python_test/opao_timeX0.1.mp4"
# 建立一個影片讀寫類
video_capture=cv2.VideoCapture(video_path)
# 讀取影片的 fps, 大小 每秒傳輸幀數
fps=video_capture.get(cv2.CAP_PROP_FPS)
size=(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH),video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
#print("fps: {}\nsize: {}".format(fps,size))
# 讀取影片時長(幀總數)
total = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))
#print("[INFO] {} total frames in video".format(total))
# 設定從影片的第幾幀開始讀取
#From : https://blog.csdn.net/luqinwei/article/details/87973472
frameToStart = 00
video_capture.set(cv2.CAP_PROP_POS_FRAMES, frameToStart);
# 顯示影片
current_frame=frameToStart
while True:
success, frame = video_capture.read()
time.sleep(0.0267)
# cv2.waitKey(40)
if success == False:
break
# 設定延時,降低播放速度
# time.sleep(0.0188)
# 自定義影像大小
h, w = frame.shape[:2] # 三通道
size = (int(w * 1.0), int(h * 1.0))
frame = cv2.resize(frame, size)
# 顯示當前影片已播放時間和總時間
# 計算當前時間
now_seconds=int(current_frame /fps%60)
now_minutes=int(current_frame/fps/60)
total_second=int(total /fps%60)
total_minutes=int(total/fps/60)
# { < 引數序號 > : < 填充 > < 對齊) > < 寬度 > <,> <. 精度 > < 型別 >}.
Time_now_vs_total="Time:{:>3}:{:>02}|{:>3}:{:0>2}".format(now_minutes,now_seconds,total_minutes,total_second)
print(Time_now_vs_total)
#-------- 鍵盤控制影片 ---------------
# 讀取鍵盤值
key = cv2.waitKey(1) & 0xff
# 按鍵 z 增長延時,外匯跟單gendan5.com j 減少延時。“ zeng ”、“ jian ” , 實現在增長到值開始建
if key == ord("z"):
count_keyz += 1
delay_time = 0 + 0.02 * count_keyz
if(delay_time>1.0):
delay_time = 1.0
if key == ord("j"):
count_keyj += 1
delay_time = delay_time - 0.02 * count_keyj
if(delay_time<0):
delay_time = 0
time.sleep(delay_time)
# print(delay_time)
time.sleep(delay_time)
# 設定空格按下時暫停
if key == ord(" "):
cv2.waitKey(1)
# 設定 Q 按下時退出
if key == ord("q"):
break
# 按下 U ,上升計數器加 1 ,表示亮度增加,即 UP
if key == ord("u"):
count_keyu +=1
# print(count_keyu)
brightness = start_brightness + count_keyu * 0.3
# print(brightness)
if(brightness>2):
brightness = 1.9
count_keyu = 0
# 確保 brightness 的結果是保留一位小數,計算時經常出現 0.00000000000000009 或 0.00000000000000001 的誤差
brightness_str =format(brightness, '.1f')
new_video_path = video_path[:25]+brightness_str+'.mp4'
video_capture = cv2.VideoCapture(new_video_path)
frameToStart = now_seconds * fps
video_capture.set(cv2.CAP_PROP_POS_FRAMES, frameToStart);
print(new_video_path)
# 按下 D ,下降計數器加 1 ,表示亮度下調,即 down
if key == ord("d"):
count_keyd += 1
brightness = start_brightness + count_keyu * 0.3 - count_keyd * 0.3 # 表示亮度的變數
if(brightness<start_brightness):
brightness = 0.1
count_keyd = 0
# 確保 brightness 的結果是保留一位小數,計算時經常出現 0.00000000000000009 或 0.00000000000000001 的誤差
brightness_str = format(brightness, '.1f')
new_video_path = video_path[:25]+brightness_str+'.mp4'
video_capture=cv2.VideoCapture(new_video_path)
frameToStart = now_seconds * fps
video_capture.set(cv2.CAP_PROP_POS_FRAMES, frameToStart);
# print(new_video_path)
# putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None):
cv2.putText(frame,Time_now_vs_total,(300,50),cv2.FONT_HERSHEY_SIMPLEX,2,(0,0,255),3)
cv2.imshow("frame",frame)
# 人工對影片幀數進行計數
current_frame += 1
video_capture.release()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2784395/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於WPF開發影片播放器播放器
- 基於M3u8的影片加密及播放加密
- opencv python 基於KNN的手寫體識別OpenCVPythonKNN
- opencv python 基於SVM的手寫體識別OpenCVPython
- python基於opencv 實現影像時鐘PythonOpenCV
- Python - opencv-python 獲取影片尺寸PythonOpenCV
- 基於 MongoDB 的 python 日誌功能MongoDBPython
- 基於OpenCV和Python的車牌提取和字元分割OpenCVPython字元
- 基於 OpenCv 和 Python 的手指識別及追蹤OpenCVPython
- Qt基於SDL庫簡單實現YUV影片播放QT
- flutter視訊全頻播放,音量亮度的調節Flutter
- 基於FFmpeg和Qt實現簡易影片播放器QT播放器
- 怎樣用python播放影片Python
- IINA Mac功能強大的免費影片播放器Mac播放器
- Python基於TCP實現聊天功能PythonTCP
- 易優cms網站videoplay功能:該標籤僅限於影片模型的文件,用於線上播放影片選集列表裡的第一個影片-Eyoucms網站IDE模型
- 基於etcd的選主功能實現的主備節點管理
- 基於Opencv的簡單影像處理OpenCV
- opencv讀取影片採集卡幀-調整解析度OpenCV
- Python基於opencv呼叫攝像頭獲取個人圖片PythonOpenCV
- 《OpenCV 4.5計算機視覺開發實戰:基於Python》OpenCV影像處理入門書OpenCV計算機視覺Python
- 基於OPENCV的手勢識別技術OpenCV
- 第十一節 關於播放完成的回撥
- OpenCV基於顏色資訊的車牌提取OpenCV
- python opencv如何實現目標區域裁剪功能PythonOpenCV
- 基於TRIZ理論解決切割機進刀調節難題
- Python實現多功能音樂播放器Python播放器
- 基於 Xcode 搭建 OpenCV 開發環境XCodeOpenCV開發環境
- python使用opencv播放視訊併傳送到串列埠,讓51顯示PythonOpenCV串列埠
- 【實戰】基於OpenCV的水錶字元識別(OCR)OpenCV字元
- 基於OpenCV的車牌識別(Sobel、顏色定位)OpenCV
- MPV 播放器:Linux 下的極簡影片播放器播放器Linux
- 基於節拍同步的 IF PCP 特徵提取特徵
- 基於Masstransit實現Eventbus的功能
- 基於Fixed定位的框選功能
- 基於HTTP的功能追加協議HTTP協議
- 基於Python的效能分析Python
- 基於 Flink+Pravega 的遊戲伺服器監控與調節系統設計遊戲伺服器