我的项目是用python3.6编写的,我使用的是opencv和{a2}。在
我想确定麻省理工大学是否能在现场视频分析方面优于mat。我有代码可以检测视频帧中的对象,然后得到一个边界框。我裁剪图像,然后把它传给神经网络。在
在我的cpu上处理每一帧视频所花费的时间大约是23毫秒。在
我想试试麻省理工大学,看看能不能快点。然而,在图像输入神经网络之前,需要将其转换回fastai能够理解的内容。以下代码适用于常规mat图像。如果我将frame
而不是uframe
传递给cv2.Umat()
,那么代码可以完美地工作。在
# get a frame of video and make a Umat out of it.
frame = video.read()
uframe = cv2.UMat(frame)
# Do stuff to uframe; grayscale, background subtraction, get object coordinates.
# crop the image.
cropped_image = cv2.UMat(uframe, [[x1:x2],[y1:y2]])
# color space conversion for fastai compatibility
swapped_image = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2RGB)
# convert to fastai Image class
fastai_image = Image(pil2tensor(swapped_image, dtype=np.float32).div_(255))
# Send fastai_image image to neural network.
但是,当我运行如上所示的代码时(将Uframe
传递给cv2.Umat()
),代码在fastai_image = Image(pil2tensor()
处失败,例外情况是:
我知道这个错误与轴数据的存储方式有关,但我不知道该怎么做。我想将图像转换回mat,或者可能更改Umat的轴数据。有人知道最有效的方法吗?在
目前没有回答
相关问题 更多 >
编程相关推荐