본문 바로가기

Enginius/Python&TensorFlow

Basic Python Usage

코드를 블로그에 써보자. http://hilite.me/


1. 현재 실행되는 파일이 있는  폴더 알아내기 

: 이 기능은 현재 실행하는 파일이 있는 폴더에 데이터셋이 담겨있는 폴더가 있을 때 유용합니다. 예를 들어서 현재 실행 중인 파일이 있는 폴더에 images 란 폴더가 있을 때 이 폴더에서 이미지를 불러오기 위해선 절대 경로를 알아야하는데 이 경우 단순히 cwd+"/images" 라고만 하면 절대 경로를 얻을 수 있죠. 


import os

# Get current folder 
cwd = os.getcwd()
print "Current Folder is %s" %(cwd) 



2. 이미지를 하나 불러와볼까요? 

import os
from scipy import misc

# Load Image 
cat = misc.imread(cwd + "/cat.jpg")
print "Type of cat is %s" % type(cat)
print "Shape of cat is %s" % (cat.shape,)


간단하죠? 

scipy라는 파이썬에서 자주 사용되는 패키지에 있는 misc라는 패지키를 불러오고, misc에 있는 imread란 함수를 통해서 이미지를 불러옵니다. 이 때 이미지의 절대 경로를 얻기 위해서 앞서 사용한 cwd를 사용합니다. 


그런데 이걸 실행하면 에러가 나시는 분들이 있을거에요. 

앞으로 이런 에러가 많이 보일텐데, 이 scipy는 파이썬에 기본적으로 설치되는 패키지는 아니기 때문이에요. 그래서 따로 설치를 해줘야해요. 각 OS 별 설치는 

https://www.scipy.org/install.html

를 참고하세요! 


이런 패키지 설치는 보통 구글에서 

python 패키지이름(numpy cv2 등등) install 사용중인OS(ubuntu, osx 등등)

의 검색어로 검색을 하시면 친절하게 알려줍니다. 


3. 불러온 이미지에 대해서 알아보죠. 


# Load Image 
cat = misc.imread(cwd + "/cat.jpg")
print "Type of cat is %s" % type(cat)
print "Shape of cat is %s" % (cat.shape,)


위의 코드를 실행시키면 

Type of cat is <type 'numpy.ndarray'>

Shape of cat is (1026, 1368, 3)

와 같이 나옵니다. 

불러오 이미지의 type은 numpy의 ndarray이고, 모양은 높이가 1026이고, 폭이 1368인 이미지라는 것입니다. 마지막의 3은 RGB 채널을 의미합니다. 


4. 그럼 그림을 그려볼까요? 

#

# Plot!!
plt.figure(0)
plt.imshow(cat)
plt.title("Original Image")
#

이렇게 하면 그림이 그려질까요? 



아닙니다! 

#

plt.show()
#

위의 코드를 추가해야합니다. 

한가지 주의할 점은 이 API는 그림을 그리면서 코드의 더 뒤로 나가지 못하게합니다. 즉 plt.show() 뒤에 어떤 명령어가 있다면 실행이 되지않을 것이라는거죠.