python - 如何从 numpy 数组转换为文件字节对象?

标签 python numpy opencv

我将图像文件读取为

with open('abc.jpg', 'rb') as f:
    a = f.read()

另一方面,我使用cv2读取同一个文件

b = cv2.imread('abc.jpg', -1)

如何直接将b转换为a

谢谢。

最佳答案

回答您的问题:

success, a_numpy = cv2.imencode('.jpg', b)
a = a_numpy.tostring()

你应该知道的事情:

首先,type(a)是一个二进制字符串,type(b)是一个numpy数组。这些类型之间的转换很容易,因为您可以使用 np.array(binary_string) 从 string 转换为 numpy,使用 np_array.tostring() 从 numpy 转换为二进制字符串。

但是,ab 代表不同的事物。在字符串 a 中,您正在读取图像的 JPEG 编码版本,在 b 中您拥有解码后的图像。您可以检查 len(b.tostring()) 是否比 len(a) 大得多。您需要知道您想使用哪一个。另外,请记住,每次对 JPEG 进行编码时,都会损失一些质量。

如何将图像保存到磁盘:

您的问题看起来像是您想要一个编码的二进制字符串。我能想到的唯一用途是将其转储到磁盘(或通过 http 发送?)。

要将图像保存到磁盘上,您可以使用

cv2.imwrite('my_file.jpg', b)

关于python - 如何从 numpy 数组转换为文件字节对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49235611/

相关文章:

matrix - 反转或点 kxnxn 矩阵的快速方法

python - 在 python 中将 2D 函数拟合到有错误的 2D 数据集

qt - 将 Qt QByteArray 转换为 OpenCV cv::InputArray

ios - iOS 上的 OpenCV ZXing 不兼容

python - Django DateField 默认选项

Python Numpy - 复数 - 是否有极坐标到矩形转换的函数?

python - 如何在 64 位机器上使用 32 位 Python 中的 virtualenv?

python - 如何获取y_true和y_pred之差的水平和垂直梯度?

python - 有没有一种简单的方法来获得多类分类的混淆矩阵? (OneVsRest)

python - 是什么导致 Python "Interpreter not Initialized (version mismatch?)"错误?