生活随笔
收集整理的這篇文章主要介紹了
opencv保存视频文件很大
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目前接觸到的視頻保存方法有兩種,一種是cv2.VideoWriter,另一種是imageio,對比下來imageio保存的錄像文件要比opencv保存的小很多,具體原因暫時不清楚。
存在的問題:
imageio保存的視頻不能獲得視頻總幀數這個屬性
import imageio
import cv2
from tqdm
import tqdm
class MyVideoWriter:def __init__(self
, save_path
, height
=None, width
=None, fps
=25):self
.save_path
= save_pathself
.height
= heightself
.width
= widthself
.fourcc
= cv2
.VideoWriter_fourcc
(*'mp4v')self
.cur_frame_id
= -1self
.fps
= fpsself
.videoWriter
= Nonedef save(self
, frame
):self
.cur_frame_id
+= 1if self
.cur_frame_id
== 0:if self
.height
is None or self
.width
is None:self
.height
, self
.width
, _
= frame
.shapeself
.videoWriter
= cv2
.VideoWriter
(self
.save_path
, self
.fourcc
, self
.fps
, (self
.width
, self
.height
))self
.videoWriter
.write
(frame
)def release(self
):if self
.videoWriter
:self
.videoWriter
.release
()self
.videoWriter
= Nonedef __del__(self
):self
.release
()
fps
= 10cv_writer
= MyVideoWriter
("cv.mp4",fps
=fps
)
io_writer
= imageio
.get_writer
("io.mp4", fps
=fps
)rtsp
= "rtsp://xxxxxxxxxxxxxxxxxxxxxx"cap
= cv2
.VideoCapture
(rtsp
)
for _
in range(1000):ret
, frame
= cap
.read
()cv_writer
.save
(frame
)io_writer
.append_data
(frame
[...,::-1])cv_writer
.release
()
io_writer
.close
()
cap
.release
()
總結
以上是生活随笔為你收集整理的opencv保存视频文件很大的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。