1. PE파일을 통째로 이미지(png)로 변환
이제 책에서 소개하는 마지막 특징추출방식인 파일 자체를 이미지로 변환하여 특징을 추출하는 방법이 남아있다.
파일의 이진코드를 순서대로 0~255사이의 숫자로 변환하여 이를 각 픽셀의 밝기 수치로 사용한다.
자료에서 제공하는 코드의 핵심 부분은 다음과 같다 :
g = np.reshape(a, (int(len(a)/width), width))
reshape= 배열의 구조를 재조정할 때 사용 (차원 간의 변경)
a(= 파일의 이진코드 )를 순차적으로 읽어와 2차원 배열로 변환한다.
g = np.uint8(g)
unit8(g) 배열g요소를 부호 없는 8bit 정수로 변환 (0~255)
배열 내 모든 요소는 0~ 255 사이가 되고 이 요소요소가 각 픽셀의 밝기를 정한다.
그림판에서 스포이드를 사용하면 색이 숫자값으로 표현되는 것을 본적 있을 것이다.
0 은 검은색, 255에 가까울수록 흰색이된다.
코드를 파이썬 3 와 현재 pillow 버전에 맞게 수정한다.
im.thumbnail(size, Image.ANTIALIAS) 는 현재 사용할 수 없다.
im.thumbnail(size, Image.LANCZOS) 로 대체 해 주자
# scipy.misc.imsave(fpng, g) 를 Pillow로 대체
img = Image.fromarray(g) # NumPy 배열을 이미지 객체로 변환
img.save(fpng, "PNG") # 이미지 저장
print에 괄호삽입
파일 input 경로와 output 경로를 자신의 환경에 맞게 조정 및 새 폴더생성
pillow 라이브러리가 없는경우 설치
pip install pillow
준비가 끝났다면 명령어를 실행한다.
python3 image.py
변환이 성공적으로 되었다!