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

Numpy cv2.imread和open().read之间有什么区别?,numpy,opencv,mxnet,Numpy,Opencv,Mxnet,我有以下代码: 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图像进行解码。imdecode将“imb”作为输入。但我得到的是

我有以下代码:

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图像进行解码。imdecode将“imb”作为输入。但我得到的是即时通讯。如何将“im”传递到mx.img.imdecode


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

看看OpenCV API

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


或者尝试以更直观的方式使用
cv2.imwrite
,就像“pyfilesystem”模块中的内存文件系统一样。

是的,使用
cv2.imread()
可以更快地将图像转换为内存中的
png
压缩数据,熵编码和读取图像,并将其组织为BGR像素的矩形网格
fp.read()。
import cv2
im = cv2.imread("0.jpg")
img_encode = cv2.imencode('.jpg', im)[1]