将cv2.imshow与Flask和celery一起使用

时间:2019-05-30 09:55:58

标签: python opencv flask celery imshow

我正在编写此应用程序,其中有一个客户端从网络摄像头获取帧并使用POST方法将其发送到Flask服务器。

Flask服务器中,有一个函数可以获取图像并执行一些图像处理并返回一个数字。到目前为止一切顺利。

我正在尝试用cv2.imshow()显示到服务器的传入流。为此,我正在使用celery,以便异步执行此操作。诀窍是您无法将图像发送到celery,因此Ι将图像转换为base64并将其作为参数传递。

将编码后的图像传递给函数后,我需要对其进行解码并使用cv2.imshow()对其进行显示。我用于转换的代码是以下代码(找到here):

def data_uri_to_cv2_img(uri):
    encoded_data = uri.split(',')[1]
    nparr = np.fromstring(encoded_data.decode('base64'), np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    return img

问题在于返回的变量imgNone,而变量nparr不是。

编辑 返回变量img后,这是我得到的错误:

error: (-215) size.width>0 && size.height>0 in function imshow

您有任何想法或想法为什么会发生这种情况,或者如何克服此问题?

0 个答案:

没有答案