我正在尝试删除原始文件的前 24 行,因此我打开了原始原始文件(我们称之为 raw1.raw)并将其转换为 nparray,然后我初始化了一个新数组并删除了 top24 行,但是在编写了新文件之后数组到新的二进制文件(raw2.raw),我发现raw2只有15.2mb,而原始文件raw1.raw就像30.6mb,我的代码:
import numpy as np
import imageio
import rawpy
import cv2
def ave():
fd = open('raw1.raw', 'rb')
rows = 3000 #around 3000, not the real rows
cols = 5100 #around 5100, not the real cols
f = np.fromfile(fd, dtype=np.uint8,count=rows*cols)
I_array = f.reshape((rows, cols)) #notice row, column format
#print(I_array)
fd.close()
im = np.zeros((rows - 24 , cols))
for i in range (len(I_array) - 24):
for j in range(len(I_array[i])):
im[i][j] = I_array[i + 24][j]
#print(im)
newFile = open("raw2.raw", "wb")
im.astype('uint8').tofile(newFile)
newFile.close()
if __name__ == "__main__":
ave()
我在写入二进制文件时尝试使用 im.astype('uint16'),但如果我使用 uint16,值会错误。