Python 无法使用PIL库创建屏幕录制的视频输出文件

Python 无法使用PIL库创建屏幕录制的视频输出文件,python,python-imaging-library,Python,Python Imaging Library,下面是我的代码。我在教程中看到了这段代码,但似乎没有为我创建输出视频文件。谁能告诉我,这里有什么问题 我希望在执行根目录中有一个输出视频文件,其名称如 import numpy as np import cv2 from PIL import ImageGrab fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter("output.avi", fourcc, 5.0, (800, 600)) while True:

下面是我的代码。我在教程中看到了这段代码,但似乎没有为我创建输出视频文件。谁能告诉我,这里有什么问题

我希望在执行根目录中有一个输出视频文件,其名称如

import numpy as np
import cv2
from PIL import ImageGrab


fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter("output.avi", fourcc, 5.0, (800, 600))

while True:
    bild = ImageGrab.grab()
    img_np = np.array(bild)

    frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)

    cv2.imshow("Screen", frame)
    out.write(frame)

    if cv2.waitKey(1) == 27:
        break

out.release()
cv2.destroyAllWindows()

以管理员身份运行程序和/或将输出文件的写入路径设置为非系统目录可以解决此问题。

以管理员身份运行程序和/或将输出文件的写入路径设置为非系统目录可以解决此问题。

您忘记了所有的
import
语句。您似乎无缘无故地分配了两次
out
。调用函数时不检查任何错误。你不会告诉我们它是否显示了什么。请纠正这些问题,如果仍然不起作用,请回来。@MarkSetchell我已通过导入和删除重复项更正了代码。我没有得到任何错误,代码正常工作。它启动一个屏幕录制实例,该实例在我的屏幕上可见(它复制我正在做的任何事情)。按下“Esc”键时,显示值为27。它会中断该序列,但不会像我希望的那样保存输出文件。请尝试
bild=ImageGrab.grab()。调整大小((800600))
和/或
fourcc=cv2.videoWriter_fourcc(*'MJPG')
@MarkSetchell。不起作用。两种方法都尝试过。好的,在
ipython
或调试器中运行它,一次一行,在运行下一行之前检查并打印您调用的每个函数、收到的每个结果以及所有变量的大小和类型。您忘记了所有的
import
语句。您似乎无缘无故地分配了两次
out
。调用函数时不检查任何错误。你不告诉我们它是否显示了什么。请纠正这些问题,如果仍然不起作用,请回来。@MarkSetchell我已通过导入和删除重复项更正了代码。我没有得到任何错误,代码正常工作。它启动一个屏幕录制实例,该实例在我的屏幕上可见(它复制我正在做的任何事情)。按下“Esc”键时,显示值为27。它会中断该序列,但不会像我希望的那样保存输出文件。请尝试
bild=ImageGrab.grab()。调整大小((800600))
和/或
fourcc=cv2.videoWriter_fourcc(*'MJPG')
@MarkSetchell。不起作用。两种方法都尝试过。好的,在
ipython
或调试器中运行它,每次一行,检查并打印您调用的每个函数、收到的每个结果以及所有变量的大小和类型,然后再运行下一行。