我正在编写此应用程序,其中有一个客户端从网络摄像头获取帧并使用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
问题在于返回的变量img
是None
,而变量nparr
不是。
编辑
返回变量img
后,这是我得到的错误:
error: (-215) size.width>0 && size.height>0 in function imshow
您有任何想法或想法为什么会发生这种情况,或者如何克服此问题?