首页 > 解决方案 > cv2.imread 和 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”格式作为输入。但我只有“我”。我必须使用 cv2.imwrite 到磁盘然后使用 fp.read() 吗?有更快的方法吗?

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

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

标签: numpyopencvmxnet

解决方案


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

看看 OpenCV cv.imencode() API。

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

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

或者尝试以cv2.imwrite更直观的方式使用“pyfilesystem”模块中的内存文件系统。[关联]


推荐阅读