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

时间:2018-12-07 09:21:13

标签: 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”格式作为输入。但是我只有“我”。我必须使用cv2.imwrite到磁盘,然后使用fp.read()吗? 有没有更快的方法?

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

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

1 个答案:

答案 0 :(得分:1)

我对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]