我想制作一個螢屏錄像機并且游標出現在視頻的每一幀中,為此我將游標的影像粘貼到螢屏截圖中,但是當我完成錄制視頻時,播放時出現錯誤。
import cv2
import os
import pyautogui
from PIL import Image
import numpy as np
import keyboard
screen_size = pyautogui.size()
FPS = 11.0
def recorder(screen_size, FPS):
fourcc = cv2.VideoWriter_fourcc(*"XVID")
video = cv2.VideoWriter("VIDEO.avi", fourcc, FPS, (screen_size))
start = input("RECORD ")
if start == "y":
ruta_actual = os.getcwd()
print(f"ruta actual: {ruta_actual}")
while True:
if keyboard.is_pressed("p"):
break
# CURSOR POSITION
screenshot_img = pyautogui.screenshot()
x, y = pyautogui.position()
cursor_img = Image.open(f"{ruta_actual}\\resources\\cursor_state0.png").convert("RGBA")
complete_img = Image.new('RGBA', (screen_size), (0, 0, 0, 0))
complete_img.paste(screenshot_img, (0, 0))
complete_img.paste(cursor_img, (x, y), cursor_img)
data = np.array(complete_img)
video.write(data)
video.release()
if __name__ == "__main__":
grabar = recorder(screen_size, FPS)
uj5u.com熱心網友回復:
您正在將RGBA影像格式寫入cv2.VideoWriter,而預期的格式是BGR.
替換data = np.array(complete_img)為:
data = cv2.cvtColor(np.array(complete_img), cv2.COLOR_RGBA2BGR)
在我的機器上,我在播放視頻時沒有遇到任何錯誤(我收到的是黑色視頻),所以可能還有第二個問題。
如果它仍然不起作用,請嘗試將編解碼器替換為cv2.VideoWriter_fourcc(*"MJPG").
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349915.html
