numpy写入二进制文件,读出,并转换为numpy

原因

使用二进制文件写入是因为我们的设备为xavier,cv2视频直接写入,编码耗时,占用cpu,因此,考虑直接将numpy矩阵写入,减少程序运行时的耗时工作。

写入

和其他文件写入一样,直接写入

import cv2
import numpy as np
img = cv2.imread('night.jpg')
print(img[:10,0,0])
writer = open("a.bin","wb")
writer.write(img)
writer.close()

读出

读出来的是二进制序列,需要转化为numpy再写入文件

img_len = 2048* 2448* 3
with open("a.bin","rb") as f:
    while True:
        a = f.read(img_len)
        if not a:
            break
        a = list(map(int, a))
        img_read = np.array(a,dtype=np.uint8).reshape((2048, 2448, 3))
        print(img_read.shape)

print(img_read[:10,0,0])
cv2.imwrite("read.png",img_read)

经过验证,两次矩阵相同,写入图像也相同

你可能感兴趣的:(opencv)