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]