이미지를 숫자로 변환하는 법 ( 폐 사진 )
딥러닝에서 이미지를 인공 신경망에 넣어서 학습을 시키는데,
인공 신경망에 사진을 넣을 때 숫자로 변환해서 넣어야 한다.
사진 --------------> 인공 신경망 -------------------> 판정
폐 결절
정상
폐암
등등
c 드라이브 밑 images 폴더 안에 폐 사진을 20장 두었다.
1. images 폴더에 있는 사진들을 불러오는 함수 생성
import os
test_image='c:\\images'
def image_load(path):
file_list=os.listdir(path)
return file_list
print(image_load(test_image))
근데 보면 숫자가 뒤죽박죽으로 로드가 된다.
이것을 순서에 맞게 정렬해주어야 한다.
2. 위의 결과에서 숫자만 나오게 하기
import os
import re # 데이터 정체 모듈
test_image='c:\\images'
file_name=[]
def image_load(path):
file_list=os.listdir(path)
for i in file_list:
a=re.sub('[^0-9]','',i) # i 값중 숫자가 아닌 건 null로 변경
file_name.append(int(a))
file_name.sort()
return file_name
print(image_load(test_image))
3. 원래 파일 형태로 만들기
import os
import re # 데이터 정체 모듈
test_image='c:\\images'
file_name=[]
def image_load(path):
file_list=os.listdir(path)
for i in file_list:
a=re.sub('[^0-9]','',i)
file_name.append(int(a))
file_name.sort()
file_res=[]
for k in file_name:
file_res.append(str(k)+'.png')
return file_res
print(image_load(test_image))
4. 절대 경로까지 추가 ( 'c:\\images\\ )
import os
import re # 데이터 정체 모듈
test_image='c:\\images'
file_name=[]
def image_load(path):
file_list=os.listdir(path)
for i in file_list:
a=re.sub('[^0-9]','',i)
file_name.append(int(a))
file_name.sort()
file_res=[]
for k in file_name:
file_res.append('c:\\images\\'+str(k)+'.png')
return file_res
print(image_load(test_image))
5. 폐 사진 이미지를 숫자로 변환하기 위해 필요한 파이썬 모듈인 opencv를 설치하기
(1) 아나콘다 프롬프트 창을 연다
(2) conda install opencv 입력
(3) 만약 오류가 발생할 경우,
pip install opencv-python
설명 : opencv 모듈은 이미지를 파이썬에서 숫자로 변환하고
다양한 이미지 처리를 할 수 있게 해주는 기술을 제공해주는 함수
예 : 구글 지도나 카카오 지도, 네이버 지도에 보면 street view가 있는데
거기에 사람 얼굴이나 자동차 번호판을 모자이크 거리를 처리 해줘야 한다.
6. 위에서 설치한 opencv 모듈을 이용해서 폐 사진을 숫자로 변환
import cv2
import os
import re # 데이터 정체 모듈
test_image='c:\\images'
file_name=[]
def image_load(path):
file_list=os.listdir(path)
for i in file_list:
a=re.sub('[^0-9]','',i)
file_name.append(int(a))
file_name.sort()
file_res=[]
for k in file_name:
file_res.append('c:\\images\\'+str(k)+'.png')
image=[]
for h in file_res:
img=cv2.imread(h)
image.append(img)
return image
print(image_load(test_image))
7. 숫자로 변환한 리스트를 신경망에 넣기 위해서는
행렬 연산 기능이 있는 numpy 모듈의 array 형태로 제공을 해줘야 한다.
애초에 숫자로 변환하는 이유가 행렬 연산을 하기 위함
따라서 위 리스트를 numpy array로 변환하기
import numpy as np # 행렬 연산을 쉽고 빠르게 해주는 모듈
import cv2
import os
import re # 데이터 정체 모듈
test_image='c:\\images'
file_name=[]
def image_load(path):
file_list=os.listdir(path)
for i in file_list:
a=re.sub('[^0-9]','',i)
file_name.append(int(a))
file_name.sort()
file_res=[]
for k in file_name:
file_res.append('c:\\images\\'+str(k)+'.png')
image=[]
for h in file_res:
img=cv2.imread(h)
image.append(img)
return np.array(image,dtype=object)
print(image_load(test_image))
'나 취준생 > 파이썬' 카테고리의 다른 글
이진 탐색 (0) | 2020.12.22 |
---|---|
합성곱 연산 알고리즘 (0) | 2020.12.22 |
웹 스크롤링 연습 ( 유튜브 댓글 ) (0) | 2020.12.22 |
MYSQL, 파이썬 연동 (0) | 2020.12.21 |
오라클과 파이썬 연동하기 (0) | 2020.12.21 |