使用Python和Opencv,如何将Umat转换回mat?

2024-09-30 12:18:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目是用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()处失败,例外情况是:

^{pr2}$

我知道这个错误与轴数据的存储方式有关,但我不知道该怎么做。我想将图像转换回mat,或者可能更改Umat的轴数据。有人知道最有效的方法吗?在


Tags: to代码图像imageget视频神经网络cv2

热门问题