如何在OpenCV中提高视频质量

3

我正在创建一个记录桌面屏幕的Python程序。

但是这段代码的输出质量非常低,而且模糊不清。

有谁能帮助我以高质量进行屏幕捕捉呢?

就像OBS Studio和Camtasia那样的屏幕录制软件一样。

我应该怎么做才能提高我的质量,改变扩展名、编解码器等等,请指出。

import cv2
import numpy as np
import datetime
from PIL import Image, ImageTk, ImageGrab

date = datetime.datetime.now()
filename='rec_%s-%s-%s-%s%s%s.mp4' % (date.year, date.month, date.day,
                                                     date.hour, date.minute, date.second)

fourcc = cv2.VideoWriter_fourcc(*'X264')
frame_rate = 16
SCREEN_SIZE = (960,540)
out = cv2.VideoWriter(filename, fourcc,framerate, SCREEN_SIZE)

while True:
        img = ImageGrab.grab()
        frame = np.array(img)

        frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
        out.write(frame)
        cv2.imshow('screenshot', frame)

        if cv2.waitKey(1) == ord("q"):
            break
cv2.destroyAllWindows()
out.release()
1个回答

0
帧率 = 16 屏幕大小 = (960, 540)
两者都太低了,您可能希望您的帧率为30,屏幕大小为1920x1080p。
另外有一个额外的信息: .mp4是屏幕录制的不好格式,我知道OBS推荐使用.flv,因为如果录制突然结束,它不会破坏整个文件,而不像.mp4。

2
屏幕尺寸为1920x1080p的文件不是视频文件,无法打开;帧率为30会导致录制的视频过快。 - amit9867
这个配置的事情对我来说也很神秘... - Vishal Kumar Sahu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接