我正在使用Flask
编写简单的REST API
,它读取上传的视频并返回一些JSON
。视频作为文件通过POST请求发送,内容类型为application/x-www-form-urlencoded
。
我想用opencv
来处理它,但是我不知道如何从原始二进制字符串中读取它。我想到的唯一解决方案是将视频保存到文件中,然后使用opencv VideoCapture
类来读取它。但是我想避免IO操作,因为我认为这会降低我的API速度。
所以我的问题是:
如何将视频从原始字节表示转换为opencv
表示(numpy数组列表)?
2条答案
按热度按时间o3imoua41#
如果您将视频作为文件上传到服务器,那么听起来就像您已经将其保存到了文件中-在这种情况下,简单地从文件中阅读它可能不会那么低效。
视频通常太大,无法放入内存,所以无论如何,它很可能会进入磁盘并返回。
如果你想让你的openCV程序直接接受流媒体视频,进行处理,然后做你接下来想做的任何事情(例如保存到文件,显示,流到其他地方),那么通常最简单的方法是将视频流到OpenCV程序(如果可能的话),并使用OpenCV直接读取流:
rqcrx0a62#
我知道现在回答这个问题有点太晚了。实际上我不知道你是如何以字符串的形式接收视频的。但是我试着模拟你的情况。我以字节串的形式打开了一个图像
输出为
然后转换为numpy数组:
而且它显示图像。希望这对你有帮助