Python 을 사용 하여 바 이 너 리 파일 의 인 스 턴 스 설명 을 읽 습 니 다.
도구:Python 3,matplotlib,os,struct,numpy
1.바 이 너 리 파일 읽 기
먼저 open 함수 로 파일 을 열 고 모드 를 열 어 바 이 너 리 를 선택 하여"rb"를 읽 습 니 다.
f = open(filename, "rb")
두 번 째 단 계 는 행렬 에 따라 파일 을 읽 는 것 을 열 어야 합 니 다.순수 바 이 너 리 파일 이기 때문에 내부 에 데이터 구조 정 보 를 포함 하지 않 습 니 다.따라서 바 이 너 리 데이터 의 줄 수열 수(nx 와 ny)를 지정 하여 이미지 의 모양 을 확인 해 야 합 니 다.여기 서 우리 의 데이터 형식 은 float 32 형 이 고 대응 하 는 것 은 4bytes 이 며 for 순환 을 사용 하여 각각 read 4 바이트 입 니 다.
for i in range(nx):
for j in range(ny):
data = f.read(4)
얻 은 결 과 는 다음 과 같다.
b'5\x9d\x82\xc3'
b'\xb1\x04\x10\xc4'
b'\xc1\x9eD\xc4'
b'a\x86R\xc4'
b'\x15\x01=\xc4'
읽 은 데 이 터 는 16 진수 이 며,이때 의 데 이 터 는 그림 을 그 리 는 데 직접 사용 할 수 없 으 며,float 32 형 으로 변환 해 야 합 니 다.여 기 는 struct.unpack 을 사용 하여 번역 합 니 다.
data_float = struct.unpack("f", data)[0]
정확 한 결 과 를 얻 을 수 있 을 거 예요.
-261.2281799316406
-576.0733032226562
-786.4805297851562
-842.0996704101562
-756.0169067382812
numpy 배열 을 만 들 고 읽 은 데 이 터 를 각각 열 우선 순위 로 배열 에 넣 으 면 그림 읽 기 작업 이 완 료 됩 니 다.상기 조작 을 함수 로 포장 하고 코드 는 다음 과 같 습 니 다.
def xshow(filename, nx, nz):
f = open(filename, "rb")
pic = np.zeros((nx, nz))
for i in range(nx):
for j in range(nz):
data = f.read(4)
elem = struct.unpack("f", data)[0]
pic[i][j] = elem
f.close()
return pic
2.그림 그리 기여기 서 우리 의 목적 은 행렬 을 그 레이스 케 일 그림 으로 출력 하고 tiff 형식의 이미지 로 저장 하 는 것 입 니 다.효과 도 는 다음 과 같 습 니 다.(이 그림 은 탄성 파 파동 방정식 을 사용 하여 Marmousi 모델 에서 의 파장 스냅 샷 입 니 다)
좌표 축 정보 가 필요 없 이 imsave 명령 을 직접 사용 하고 cmap 로 색상 형식 을 선택 하면 됩 니 다.
plt.imsave('output.tiff', img, format='tiff', cmap=plt.cm.gray)
PIL 라 이브 러 리 로 그림 을 읽 으 면 다른 효 과 를 얻 을 수 있 고 직사 도 균형 을 맞 춰 야 할 수도 있 으 며 원인 을 찾 지 못 했 습 니 다.파 이 썬 을 사용 하여 바 이 너 리 파일 을 읽 는 인 스 턴 스 설명 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.