我正在尝试修改给定屏幕流here的代码。在上面的教程中,它用于从磁盘读取图像,而我试图截取屏幕截图。我收到此错误。Python屏幕捕获错误
assert isinstance(data, bytes), 'applications must write bytes' AssertionError: applications must write bytes
我应该对它做些什么改变?
这是我到目前为止已经完成 -
<br>index.html<br>
<html>
<head>
<title>Video Streaming Demonstration</title>
</head>
<body>
<h1>Video Streaming Demonstration</h1>
<img src="{{ url_for('video_feed') }}">
</body>
</html>
app.py
#!/usr/bin/env python
from flask import Flask, render_template, Response
import time
# emulated camera
from camera import Camera
# Raspberry Pi camera module (requires picamera package)
# from camera_pi import Camera
app = Flask(__name__)
@app.route('/')
def index():
"""Video streaming home page."""
return render_template('index.html')
def gen(camera):
"""Video streaming generator function."""
while True:
time.sleep(0.1)
frame = camera.get_frame()
yield (frame)
@app.route('/video_feed')
def video_feed():
"""Video streaming route. Put this in the src attribute of an img tag."""
return Response(gen(Camera()),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True, threaded=True)
camera.py
from time import time
from PIL import Image
from PIL import ImageGrab
import sys
if sys.platform == "win32":
grabber = Image.core.grabscreen
class Camera(object):
def __init__(self):
#self.frames = [open('shot0' + str(f) + '.png', 'rb').read() for f in range(1,61)]
self.frames = [ImageGrab.grab() for f in range(1,61)]
def get_frame(self):
return self.frames[int(time()) % 3]
完整的错误: Link
您可以发布完整的堆栈跟踪的错误? – xli
@xli添加堆栈跟踪 – user6945506