Flask服务器在启动时挂起(并且不提供任何页面)。发生这种情况是因为尝试在类中初始化OpenCV VideoCapture:
我有一个LaptopCamera
类,该类使用OpenCV初始化便携式相机:
class LaptopCamera:
def __init__(self):
self.video = cv2.VideoCapture(0)
self.video.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
self.video.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
self.video.set(cv2.CAP_PROP_FPS, 60)
self.video.set(cv2.CAP_PROP_BUFFERSIZE, 1)
def single_image(self):
"""return jpeg image of frame"""
ret, jpeg = cv2.imencode('.jpeg', self.read_video())
return jpeg.tobytes()
,然后在烧瓶服务器中使用它,如下所示:
@API.route('/picture.jpeg')
def provide_jpeg():
cam.read_video()
return Response(cam.single_image(), mimetype='image/jpeg')
cam = LaptopCamera()
if __name__ == '__main__':
tankyAPI.run(HOST, PORT, debug=True)
如果我首先评论cam = LaptopCamera()
,请启动服务器,取消对cam = LaptopCamera()
的注释,然后等待其重新加载就可以了。
我想知道为什么会这样吗?以及如何找到解决方案?
答案 0 :(得分:0)
在开发应用程序时,我也有类似的经历。我的解决方案是删除所有库,创建一个新环境,然后重新安装所有库。它在Ubuntu 18上运行,并且CV2和其他python模块之间有些系统库有所不同,因此解决我的问题的最简单方法是从头开始并重新安装每个库。
希望这会有所帮助。