如何将dlib.get_frontal_face_detector()的输出(dlib.rectangles)保存在Python脚本(Flask Server)中?



我正在使用Flask构建一个Web应用程序。

在客户端(JavaScript(上,我有一个脚本,它使用客户端的网络摄像头"抓取"一个帧并将其发送到服务器。在服务器端(Flask(,我有一个使用DLib来检测该帧中的人脸的Python脚本。

该应用程序运行,但由于我在每一帧中使用dlib.get_frontal_face_detector(((来检测面部(,这增加了服务器的响应时间(响应总共需要 125 毫秒,其中 83% 由 dlib.get_frontal_face_detector(( 使用(。

我正在尝试实现 Davis King(DLib 的作者(在 GitHub 问题 #1556 中提出的解决方案:"每隔几帧才运行一次检测器"。 但是,我无法将 dlib.get_frontal_face_detector(( 的输出保存到会话对象中。

这是我得到的错误:

TypeError: Object of type 'rectangle' is not JSON serializable

我认为这个问题与 dlib.get_frontal_face_detector(( 的输出具有类型:类 'dlib.rectangles' 有关。但是,我无法找出解决方案。

有什么帮助吗?

这是解决方案*:dlib.get_frontal_face_detector(( 的输出必须转换为 JSON 兼容对象,才能存储在会话中。稍后(即在以下请求中使用(,必须再次将其转换为其原始类型。

(*归功于米格尔·格林伯格(