我正在尝试使用opencv将多个帧组合到一个视频中。
这可能吗?
我的程序可以保存多张图像,但不能将它们合并为一个视频。
import time
import cv2
import mss
import numpy
frame = 1
with mss.mss() as sct:
# Part of the screen to capture
monitor = {'top': 40, 'left': 0, 'width': 800, 'height': 640}
while 'Screen capturing':
last_time = time.time()
# Get raw pixels from the screen, save it to a Numpy array
img = numpy.array(sct.grab(monitor))
# Display the picture
frame += 1
name = 'C:/Users/samih/SublimePython/Game_Play_Recorder/Imgs/img' + str(frame) + '.png'
cv2.imwrite(name, img)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
它应该能够将所有这些图像转换为一个视频。
最佳答案
您正在寻找的是VideoWriter。请参见的官方教程,位于保存视频下。import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
frame = cv.flip(frame, 0)
# write the flipped frame
out.write(frame)
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
# Release everything if job is finished
cap.release()
out.release()
cv.destroyAllWindows()
关于python - OpenCV将多个帧转换成视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334225/