안 쓰던 블로그
OpenCV를 활용한 이미지 처리 본문
OpenCV의 imread()이용한 이미지 로딩 시 주의할 점
OpenCV에서 이미지 로딩은 imread(‘파일명’)을 이용, imread(‘파일명’)은 파일을 읽어 넘파이 array로 변환
근데 OpenCV가 이미지를 RGB 형태가 아닌 BGR 형태로 로딩하기 때문에 색감이 원본 이미지와 다르게 나타난다(원본이 붉은 계열이면 퍼렇게 나옴)
bgr_img_array = cv2.imread(‘파일명’)
rgb_img_array = cv2.cvtColor(bgr_img_array, cv2.COLOR_BGR2RGB)
plt.imshow(rgb_img_array)
다음 코드처럼 BGR을 RGB로 바꿔주어야 한다(BGR2RGB)
imwrite()를 이용하여 파일에 쓰기
OpenCV에서 메모리에 있는 이미지 배열을 다시 파일에 저장하려면 imwrite(‘출력파일명‘, 이미지배열)을 이용
imwrite는 BGR형태로 되어 있는 이미지 배열을 다시 RGB 형태로 변환하여 저장한다
따라서 imread( )로 읽고, imwrite( )로 출력한 이미지 파일은 다시 RGB 형태의 파일이 됨
주피터 노트북에서의 OpenCV Windows Frame 인터페이스 주의할 점
cv2.imshow(이미지 array)는 이미지 배열을 window frame에 보여줌
cv2.waitKey() : 키보드 입력이 있을 때까지 무한 대기
cv2.destroyAllWindows(): 화면의 윈도우 프레임 모두 종료 주피터 노트북 기반에서는 이미지 배열의 시각화에 matplotlib을 사용
전부 Window Frame과 인터페이스 하는 기능인데, Window Frame 생성이 가능한 GUI 개발 환경에서만 가능하고 주피터 노트북에서는 오류가 발생한다
->대신 matplotlib 이용
패키지별 이미지 로딩 비교
[PIL 패키지]
import matplotlib.pyplot as plt
import os
%matplotlib inline
from PIL import Image
default_dir = '/content/DLCV'
pil_image = Image.open(os.path.join(default_dir, "data/image/beatles01.jpg"))
print('image type:', type(pil_image))
plt.figure(figsize=(10, 10))
plt.imshow(pil_image)
[사이킷이미지]
from skimage import io
#skimage는 imread()를 이용하여 image를 numpy 배열로 반환
sk_image = io.imread(os.path.join(default_dir, "data/image/beatles01.jpg"))
print('sk_image type:', type(sk_image), ' sk_image shape:', sk_image.shape)
plt.figure(figsize=(10, 10))
plt.imshow(sk_image)
[openCV]
import cv2
#OpenCV는 imread()를 이용하여 원본 RGB 이미지를 BGR 형태의 넘파이 배열로 반환
cv2_image = cv2.imread(os.path.join(default_dir, "data/image/beatles01.jpg"))
#imwrite()를 이용하면 다시 RGB로 바꿔주기 때문에 RGB->BGR->RGB 신경쓰지 않아도 된다
cv2.imwrite(os.path.join(default_dir, "data/output/beatles02_cv.jpg"), cv2_image)
print('cv_image type:', type(cv2_image), ' cv_image shape:', cv2_image.shape)
plt.figure(figsize=(10, 10))
img = plt.imread(os.path.join(default_dir, "data/output/beatles02_cv.jpg"))
plt.imshow(img)
imwrite를 쓴다면 RGB가 된다
cv2_image = cv2.imread(os.path.join(default_dir, "data/image/beatles01.jpg"))
draw_image = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(10, 10))
plt.imshow(draw_image)
plt.show()
그렇지 않다면 BGR2RGB로 변환해 준다
'머신러닝 > 머신러닝' 카테고리의 다른 글
RCNN, SPM, SPP, SPPNet (0) | 2021.01.17 |
---|---|
OpenCV를 활용한 영상 처리 (0) | 2021.01.17 |
Object Detection_5. Pascal VOC 데이터 세트 가져오기 (0) | 2021.01.17 |
Object Detection_4. NMS 및 성능 평가 Metric - mAP (1) | 2021.01.17 |
Object Detection_3. 성능 평가 Metric - IOU (0) | 2021.01.17 |