Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和Opencv,如何将Umat转换回mat?_Python_Opencv_Opencl_Mat - Fatal编程技术网

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

使用Python和Opencv,如何将Umat转换回mat?,python,opencv,opencl,mat,Python,Opencv,Opencl,Mat,我的项目是用python 3.6编写的,我正在使用和 我正在尝试确定Umat是否能在一些现场视频分析方面胜过mat。我有代码可以检测视频帧中的对象,然后得到一个边界框。我裁剪图像,然后将其传递给神经网络 在我的cpu上处理每一帧视频所需的时间约为23毫秒 我想尝试使用Umat,看看是否可以做得更快。然而,在将图像输入神经网络之前,需要将其转换回fastai能够理解的内容。以下代码适用于常规mat图像。如果我将frame而不是uframe传递到cv2.Umat(),那么代码工作得非常好 # get

我的项目是用python 3.6编写的,我正在使用和

我正在尝试确定Umat是否能在一些现场视频分析方面胜过mat。我有代码可以检测视频帧中的对象,然后得到一个边界框。我裁剪图像,然后将其传递给神经网络

在我的cpu上处理每一帧视频所需的时间约为23毫秒

我想尝试使用Umat,看看是否可以做得更快。然而,在将图像输入神经网络之前,需要将其转换回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()
)处失败,但有一个例外:

ValueError: axes don't match array

我知道此错误与轴数据的存储方式有关,但我不确定如何处理。我想将图像转换回mat,或者可能更改Umat的轴数据。有人知道最有效的方法吗?

cv2.Umat.get(交换的\u图像)
这很有效,谢谢!不幸的是,到目前为止,它的运行速度似乎差不多,但我会继续修补它,看看是否可以改进它。是的,
UMat
上可能做的工作太少了,因此无论您在颜色转换上节省多少,都会在将数据移动到
UMat
cv2的开销中丢失。UMat.get(交换的图像)这很有效,谢谢!不幸的是,到目前为止,它的运行速度似乎大致相同,但我会继续修补它,看看是否可以改进它。是的,
UMat
上可能做的工作太少了,因此无论您在颜色转换上节省多少,都会在将数据移动到
UMat
的开销中丢失。