본문 바로가기

나 취준생/파이썬

폐 사진 이미지를 숫자로 변환

320x100

이미지를 숫자로 변환하는 법 ( 폐 사진 )


딥러닝에서 이미지를 인공 신경망에 넣어서 학습을 시키는데,

인공 신경망에 사진을 넣을 때 숫자로 변환해서 넣어야 한다.



사진 --------------> 인공 신경망 ------------------->  판정

    폐 결절

정상

폐암

등등



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