多くの医療画像は RAW 形式で保存されます。RAW 形式は、一眼レフ カメラで撮影された写真の元の形式でもあります。
RAW 画像:CMOS または CCD イメージセンサーが、取り込んだ光源信号をデジタル信号の元のデータに変換します。
最近、pytorchを使って眼科医療画像を加工する場合、rawをjpgに変換する必要があります。一般に RAW 画像は直接処理できないため、フォーマット変換には Python が使用されます。調べてみると非常に複雑で、rawのデータ形式や画像の長さや幅などをどう取得するか、結果は自分で試してみること、結果はopencvで直接取得できるので記録しておきます。私はまだ深く研究していませんが、将来的には生画像の処理についてさらに深く研究し続けることを楽しみにしています。
コアコード
img = cv2.imread(filePath)
cv2.imwrite(filename, img)
完全なコード: jpg.py
import numpy as np
import os
import cv2
import shutil
from PIL import Image
def searchDirFile(rootDir,saveDir):
for dir_or_file in os.listdir(rootDir):
try:
filePath = os.path.join(rootDir, dir_or_file)
# 判断是否为文件
if os.path.isfile(filePath):
# 如果是文件再判断是否以.jpg结尾,不是则跳过本次循环
if os.path.basename(filePath).endswith('.raw'):
print('imgBox fileName is: '+os.path.basename(filePath))
# 拷贝jpg文件到自己想要保存的目录下
# shutil.copyfile(filePath,os.path.join(saveDir,os.path.basename(filePath)))
img = cv2.imread(filePath)
path2 = filePath.split('/')[2]
path = f'{saveDir}/{path2}'
# print(path)
if not os.path.exists(path):
os.makedirs(path)
filename = os.path.splitext(os.path.basename(filePath))[0] + ".jpg"
filename = os.path.join(path, filename)
print('filename is: '+filename)
cv2.imwrite(filename, img)
else:
continue
# 如果是个dir,则再次调用此函数,传入当前目录,递归处理。
elif os.path.isdir(filePath):
searchDirFile(filePath, saveDir)
else: print('not file and dir '+os.path.basename(filePath))
except:
continue
if __name__ == '__main__':
rootDir = './Images'
saveDir = './jpg'
searchDirFile(rootDir, saveDir)
print("the end !!!")