日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

视频操作_01视频读写:视频读写+读取视频+保存视频

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 视频操作_01视频读写:视频读写+读取视频+保存视频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 從文件中讀取視頻并播放


在OpenCV中我們要獲取一個視頻,需要創建一個VideoCapture對象,指定你要讀取的視頻文件:

1.創建讀取視頻的對象

cap = cv.VideoCapture(filepath)

參數:

????????filepath: 視頻文件路徑


2.視頻的屬性信息

2.1. 獲取視頻的某些屬性,

retval = cap.get(propId)

參數:

  • propId: 從0到18的數字,每個數字表示視頻的屬性

常用屬性有:

2.2 修改視頻的屬性信息

cap.set(propId,value)

參數:

  • proid: 屬性的索引,與上面的表格相對應
  • value: 修改后的屬性值

判斷圖像是否讀取成功

isornot = cap.isOpened()

若讀取成功則返回true,否則返回False
獲取視頻的一幀圖像

ret, frame = cap.read()

參數:

  • ret: 若獲取成功返回True,獲取失敗,返回False
  • Frame: 獲取到的某一幀的圖像

調用cv.imshow()顯示圖像,在顯示圖像時使用cv.waitkey()設置適當的持續時間,如果太低視頻會播放的非常快,如果太高就會播放的非常慢,通常情況下我們設置25ms就可以了。
最后,調用cap.realease()將視頻釋放掉

示例:

import numpy as np import cv2 as cv # 1.獲取視頻對象 cap = cv.VideoCapture('img/01.mp4') # 2.判斷是否讀取成功 while(cap.isOpened()):# 3.獲取每一幀圖像#ret: 若獲取成功返回True,獲取失敗,返回False #Frame: 獲取到的某一幀的圖像ret, frame = cap.read() # 4. 獲取成功顯示圖像if ret == True:cv.imshow('frame',frame)# 5.每一幀間隔為25msif cv.waitKey(25) & 0xFF == ord('q'):break # 6.釋放視頻對象 cap.release() cv.destroyAllwindows()


2 保存視頻


在OpenCV中我們保存視頻使用的是VedioWriter對象,在其中指定輸出文件的名稱,如下所示:

創建視頻寫入的對象

out = cv2.VideoWriter(filename,fourcc, fps, frameSize)

參數:

  • filename:視頻保存的位置
  • fourcc:指定視頻編解碼器的4字節代碼
  • fps:幀率
  • frameSize:幀大小

設置視頻的編解碼器,如下所示,

retval = cv2.VideoWriter_fourcc( c1, c2, c3, c4 )

參數:

  • c1,c2,c3,c4: 是視頻編解碼器的4字節代碼,在fourcc.org中找到可用代碼列表,與平臺緊密相關,常用的有:

????????????????????????在Windows中:DIVX(.avi)

????????????????????????在OS中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。

  • 利用cap.read()獲取視頻中的每一幀圖像,并使用out.write()將某一幀圖像寫入視頻中。
  • 使用cap.release()和out.release()釋放資源。

示例:

import cv2 as cv# 1. 讀取視頻 cap = cv.VideoCapture("img/01.mp4")# 2. 獲取圖像的屬性(寬和高),并將其轉換為整數 frame_width = int(cap.get(3)) frame_height = int(cap.get(4))# 3. 創建保存視頻的對象,設置編碼格式,幀率,圖像的寬高等 out = cv.VideoWriter('outpy.avi', cv.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height)) while (True):# 4.獲取視頻中的每一幀圖像ret, frame = cap.read()if ret == True:# 5.將每一幀圖像寫入到輸出文件中out.write(frame)else:break# 6.釋放資源 cap.release() out.release() cv.destroyAllWindows()

總結

讀取視頻:

  • ????????讀取視頻:cap = cv.VideoCapture()
  • ????????判斷讀取成功:cap.isOpened()
  • ????????讀取每一幀圖像:ret,frame = cap.read()
  • ????????獲取屬性:cap.get(proid)
  • ????????設置屬性:cap.set(proid,value)
  • ????????資源釋放:cap.release()

保存視頻

  • ????????保存視頻: out = cv.VideoWrite()
  • ????????視頻寫入:out.write()
  • ????????資源釋放:out.release()

總結

以上是生活随笔為你收集整理的视频操作_01视频读写:视频读写+读取视频+保存视频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。