python opencv 录制视频_Python利用opencv实现录制视频
import cv2
import threading? ? #python 多線程操作庫
class RecordingThread(threading.Thread):
def __init__(self, name, camera):
threading.Thread.__init__(self)
self.name = name
self.isRunning = True
self.cap = camera
fourcc = cv2.VideoWriter_fourcc(*'MJPG') #設置視頻編碼方式
self.out = cv2.VideoWriter('./images/video.avi', fourcc, 20.0, (640, 480))
# out 是VideoWriter的實列對象,就是寫入視頻的方式,第一個參數(shù)是存放寫入視頻的位置,
# 第二個是編碼方式,20是幀率,最后是視頻的高寬,如果錄入視頻為灰度,則還需加一個false
def run(self):
while self.isRunning:
ret, frame = self.cap.read()? #read()函數(shù)表示按幀讀取視頻,success,frame是read()的兩個返回值,
# ret是布爾值——如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾則返回False,Frame表示的是每一幀的圖像,是一個三維矩陣
if ret:
self.out.write(frame)
self.out.release()
def stop(self):
self.isRunning = False
def __del__(self):
self.out.release()
class VideoCamera(object):
def __init__(self):
# 打開攝像頭, 0代表筆記本內(nèi)置攝像頭
self.cap = cv2.VideoCapture(0)
# 初始化視頻錄制環(huán)境
self.is_record = False
self.out = None
# 視頻錄制線程
self.recordingThread = None
# 退出程序釋放攝像頭
def __del__(self):
self.cap.release()
def close(self):
if self.cap.isOpened():
self.cap.release()
def start_record(self):
self.is_record = True
self.recordingThread = RecordingThread("Video Recording Thread", self.cap)
self.recordingThread.start()
def stop_record(self):
self.is_record = False
if self.recordingThread != None:
self.recordingThread.stop()
import time
camera = VideoCamera()
camera.start_record()
time.sleep(10)
camera.stop_record()
總結(jié)
以上是生活随笔為你收集整理的python opencv 录制视频_Python利用opencv实现录制视频的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科学计数怎么转换成数字_手持式尘埃粒子计
- 下一篇: python的所有数据类型都可以相互转化