有些图片保存下来读取的是乱码,
我们需要将乱码使用 np.fromfile 函数将乱码转为矩阵形式。
import numpy as np
import matplotlib.pyplot as plt
import cv2
from PIL import Image
import os
y8path = '这里输入二进制文件的存储地址'
"""
np.fromfile(frame, dtype = float, count=-1, sep=’’):
frame: 文件、字符串 ; dtype: 读取的数据以此类型存储; count:读入元素个数, -1表示读入整个文件;
sep: 数据分割字符串,如果是空串,写入文件为二进制
"""
for i, p in enumerate(os.listdir(y8path)): #遍历文件夹下的所有文件
path = os.path.join(y8path, p) #拼接文件读取地址
x = np.fromfile(path, dtype=np.uint8, count=-1) #将二进制文件流转为一维矩阵
print(x.shape)#输出矩阵的大小
y = x.reshape(int(480*1.5), 640) #根据x的shape, 定义图片的长宽,480*1.5*640 = x.shape
#使用的图片格式是YUV,转为opencv读取的BGR格式
x = cv2.cvtColor(y, cv2.COLOR_YUV2BGR_NV12)
cv2.imwrite("%s.jpg" % i, x) #保存图片
# cv2.imshow("1", x)
# cv2.waitKey()