cv2.imread 和 open().read 有什么区别?

What is the difference between cv2.imread and open().read?

我有这个代码:

import cv2
im = cv2.imread("0.jpg")
print(len(im.tobytes()))
fp = open("0.jpg", 'rb')
imb = fp.read()
print(len(imb))

他们不一样!现在一个函数以 'imb' 格式作为输入。但是我只有'im'。我必须使用cv2.imwrite到磁盘然后使用fp.read()? 有没有更快的方法?

我使用的是mxnet image imdecode。 imdecode 将 'imb' 作为输入。但我就是我得到的。如何将 'im' 传递给 mx.img.imdecode?

https://github.com/apache/incubator-mxnet/issues/13545

我对 mxnet 框架不熟悉。但是根据你给的代码,我猜你想要二进制格式的图像数据。

看看 OpenCV cv.imencode() API.

import cv2
im = cv2.imread("0.jpg")
img_encode = cv2.imencode('.jpg', im)[1]

我认为变量 img_encode 可能是您想要的。

或者尝试以更直观的方式使用 cv2.imwrite,例如 "pyfilesystem" 模块中的内存文件系统。[link]