Я пишу функцию Rest-API, которая должна брать видео из почтового запроса, обрабатывать видео с помощью OpenCV и возвращать текстовый ответ. Я застрял при чтении видео из его строкового представления.
Я посмотрел документацию, в которой описано, как читать видео в OpenCV, и все они либо читают по пути, либо с веб-камеры. Например, cv2.VideoCapture или FileVideoStream из imutils используют путь к файлу для загрузки видео. Однако я хочу избежать избыточных операций ввода-вывода и не хочу сначала записывать видео в файл.
Связанные части в моем проекте:
@app.route('/processvideo', methods = ['POST'])
def process_video():
# read as string
fStr = request.files['file'].read() # file is read as string from the request
npimg = np.fromstring(fStr, np.uint8) # string data is converted to numpy array.
# image = cv2.imdecode(npimg, cv2.IMREAD_COLOR) # this functions doesn't work, because it only takes image, not video.
return jsonify( { 'output': 'test' } )
Я отправляю запрос в cli для проверки следующим образом:
curl -F 'file=@demo.mp4' http://localhost:5000/processvideo
Я хочу обрабатывать входящее видео кадр за кадром, поэтому мне нужны кадры в виде изображения. Спасибо за любую помощь.