0

rawファイルの上位24行を削除しようとしているので、元のrawファイル(raw1.rawと呼びましょう)を開いてnparrayに変換し、新しい配列を初期化して上位24行を削除しましたが、新しい配列を新しいバイナリ ファイル (raw2.raw) に追加すると、元のファイル raw1.raw が 30.6mb のようであるのに対し、raw2 は 15.2mb のみであることがわかりました。私のコードは次のとおりです。

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 を使用すると値が正しくありません。

4

1 に答える 1