将通过 django 上传的视频传递给 cv2

Pass video uploaded via django to cv2

我正在通过 django 上传视频并想使用 cv2 处理它。 这是通过 django 上传的视频的访问方式。

video_obj = request.FILES['file_name']

接下来我想把它传递给opencv。我不想先将视频保存在磁盘中,然后使用以下代码通过 cv2 访问它

cap = cv2.VideoCapture(vid_path) 

我尝试通过这种方式将此 video_obj 传递给 VideoCapture

video_obj = request.FILES['file_name']
cap = cv2.VideoCapture(video_obj) 

但是我得到以下错误

Can't convert object of type 'TemporaryUploadedFile' to 'str' for 'filename'
VideoCapture() missing required argument 'apiPreference' (pos 2)

好像是 cv2.VideoCapture can only work with filepath。 因此,要从 TemporaryUploadedFile 对象获取路径,您可以使用 temporary_file_path() 方法。

@Abdul Niyas P M的答案是正确的,但这里有一个像我这样的人的例子:

video_obj = request.FILES['file_name']
vid_path = video_obj.temporary_file_path()

cap = cv2.VideoCapture(vid_path)