이번 포스팅을 통해 Color Image를 grayScale Image로 바꿔보도록 하겠습니다.
먼저 바꿀 DataSet을 준비합니다.
저는 위 사진과 같이 여러개의 컬러 이미지를 준비하였습니다. 그리고 디렉토리 구조는 다음과 같습니다.
바꿀 이미지폴더를 소스코드와 같은 디렉토리에 위치시켜놓았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | import cv2 import os import numpy as np from PIL import Image path = 'Kang' imagePaths = [os.path.join(path,file_name) for file_name in os.listdir(path)] for imagePath in imagePaths: img = Image.open(imagePath).convert('L') img_numpy = np.array(img, 'uint8') cv2.imwrite("Kang\\" + imagePath.split("\\")[-1], img_numpy) print("All Done") | cs |
소스코드를 분석해보면 다음과 같습니다.
일단 필요한 라이브러리들을 import한 뒤
path = 'Kang' 이미지 파일들이 들어있는 폴더 이름을 path에 지정합니다.
imagePaths = [os.path.join(path,file_name) for file_name in os.listdir(path)]
os.listdir() 함수를 사용하면 path 내의 모든 파일명을 리스트로 얻어올 수 있습니다.
이후 os.path.join()을 이용하여 파일명을 path와 결합하여 image파일의 상대경로를 얻습니다.
(예를 들면 여기서는 Kang\User.1.1.png 와 같습니다.)
이미지 파일을 어디에 위치시켰냐에 따라 경로를 달리설정해야 할 수도 있고
경로 설정을 어떻게해야하는지 잘 모르겠다면 맘 편히 절대경로를 사용하셔도 됩니다.
img = Image.open(imagePath).convert('L')
이미지 파일을 연뒤 convert('L') 을 이용하여 grayscale로 바꿔줍니다.
img_numpy = np.array(img, 'uint8')
이후 grayscale을 numpy array로 바꿔준 뒤
cv2.imwrite("Kang\\" + imagePath.split("\\")[-1], img_numpy)
위 코드를 이용하여 저장을 합니다. 저는 color image에 grayscale image를 덮어 씌우기 위해
위와 같이 하였습니다.
imagePath를 slplit()을 이용하여 "\"로 나누어 리스트화한 뒤 => Kang\User.1.1.png 를 [Kang, User.1.1.png] 로 변환.
[-1] 을 이용하여 리스트의 가장 마지막 원소를 얻었습니다. => User.1.1.png
위와 같이 하지 않고 단순히 cv2.imwrite(imagePath, img_numpy)로 하셔도 될 겁니다.
다만 저는 경로를 다르게 지정하는 것을 고려해서 위와 같이 코드를 작성하였습니다.
script를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
============================================================================================
cv2.cvtColor()를 이용한 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import cv2 import os import numpy as np from PIL import Image path = "C:\\Users\\jayfl\\Desktop\\Capston\\DataGathering\\Kang" imagePaths = [os.path.join(path,file_name) for file_name in os.listdir(path)] count = 0 for imagePath in imagePaths: count += 1 img = Image.open(imagePath) img_numpy = np.array(img, 'uint8') gray = cv2.cvtColor(img_numpy, cv2.COLOR_BGR2GRAY) cv2.imwrite("C:\\Users\\jayfl\\Desktop\\Capston\\DataGathering\\Gray\\User.1." + str(count) + ".jpg" , gray) print("All Done") | cs |
댓글,
jayharvey
머신러닝/딥러닝 관련 글을 포스팅할 예정입니다 :)