В чем разница между 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()? Есть ли более быстрый способ?

Я использую imdecode изображения mxnet. imdecode принимает 'imb' в качестве входных данных. Но я это то, что я получаю. Как передать "я" в mx.img.imdecode?

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

1 ответ

Решение

Я не знаком с фреймворком mxnet. Но в соответствии с кодом, который вы дали, я думаю, вам нужны данные изображения в двоичном формате.

Взгляните на API OpenCV cv.imencode ().

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

Я думаю, что переменная img_encode это то, что вы хотите.

Или попробуйте использовать cv2.imwrite более интуитивным способом, как Memory Filesystem в модуле "pyfilesystem". [ссылка на сайт]

Другие вопросы по тегам