본문 바로가기

졸업프로젝트/OpenCV

[OpenCV]이미지 읽기,출력,저장

728x90

OpenCV를 이용하여 이미지 읽어오기, 쓰기(출력),저정하기

구글 코랩사용

ProjectStudy>yj>crop> OpenCV이미지읽기_쓰기_저장하기 , 이미지 저장.ipynb

OpenCV는 RGB가 아닌 BGR을 사용 ( 순서를 변경해야함 ) -> imshow / imwrite참고사이트 참고

 

 사용 라이브러리

import numpy as np
import cv2 #openCV package

OpenCV 패키지인 cv2를 import

 

이미지 읽어오기 

 

imread() : 이미지 읽어오기 

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_COLOR) #사진을 컬러로 읽어오기 

이미지의 경로를 저장한 후, 해당 경로에서 이미지를 컬러로 읽어옴 

 

 

imread : 이미지를 읽어오는 함수 
imread(filename : 이미지 파일 경로 , flag : 이미지를 읽어오는 방식)

이미지를 특정 파일(filename) 로부터 읽어온 후 그것을 반환해주는 함수

bmp, jpg(jpeg,), png 등을 지원

 

flag 종류

보통 다른것을 사용하지는 않고

IMREAD_COLOR , IMREAD_GRAYSCALE 을 사용하는데 (나머지는 사진의 크기를 작게 변경하는 것들임)

IMREAD_GRAYSCALE의 계산량이 더 적기때문에 이 방법을 추천 

 

 

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_COLOR : 컬러 이미지

 

 

이미지 출력하기 

 

imshow() : 이미지 읽어오기 

    #이미지 출력하기
    cv2.imshow('image',img) 
    cv2.waitKey(0) # 키보드 입력을 대기하는 함수, milisecond값을 넣으면 해당 시간동안 대기, 0인경우 무한으로 대기
    cv2.destoryAllWindows() # 표시했던 윈도우를 종료 
    #cv2.waitKey(1) 없어도 되지만 주피터 버그해결 용도 

 

imshow : 이미지를 쓰는(출력하는) 함수 
imshow(title : 윈도우 창의 이름, image : cv2.imread()의 리턴값)

imread로 읽어들인 이미지를 파일 윈도우창에 보여줌

 

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_COLOR)

    #이미지 출력하기
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

 

* imshow : 코랩에서 사용이 불가능한 함수로 

아마도 윈도우 창을 따로 띄워준 후 그 창에 사진을 보여주는건데, 코랩은 따로 창을 띄울수 있는 기능이 없어서 인 것으로 추측 

다음과 같은 오류가 발생한다

 

해결 방법

colab에서 지원 가능한 함수로 변경해줌 

from google.colab.patches import cv2_imshow

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_COLOR)

    #이미지 출력하기( ver. colab)
    cv2_imshow(img)

 

 

결과

 

 

 

이미지 저장하기

 

imwrite:이미지 저장하기

    cv2.imwrite('/gdrive/MyDrive/cropStudy/grayImage.png',img)

 

 

imwrite : 읽어온 이미지를 다른이름으로 저장하는 함수
imwrite(filename : 이미지를 저장할 경로, image : imread의 리턴 결과)

imread로 읽은 이미지를 다른이름으로 저장해주는 함수 

 

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_GRAYSCALE : 흑백 이미지


    #이미지 화면에 출력하기
    cv2_imshow(img)

	#이미지 해당 경로에 저장
    cv2.imwrite('/gdrive/MyDrive/cropStudy/grayImage.png',img)


#함수 실행
if __name__ == '__main__':
    handle_image()

 

 

 

컬러이미지(sample.jpg) 를 imread로 gray버전으로 읽어들인 후 grayimage.png라는 다른이름으로 같은 경로에 저장해보자

sample.jpg

 

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_GRAYSCALE : 흑백 이미지


    #이미지 화면에 출력
    cv2_imshow(img)

    #이미지 저장
    cv2.imwrite('/gdrive/MyDrive/cropStudy/grayImage.png',img)


#함수 실행
if __name__ == '__main__':
    handle_image()

 

결과 

같은 경로에 지정한 이름으로 저장됨

 

 

전체코드

#OpenCV - 이미지 읽기, 쓰기 및 표시하기(1)
#https://leembedded.tistory.com/14?category=698391

#라이브러리 임포트
import numpy as np
import cv2 #openCV package
from google.colab.patches import cv2_imshow

#구글 드라이브와 연동 
from google.colab import drive
drive.mount('/gdrive')

def handle_image():
    #이미지 읽어오기
    imgfile = '/gdrive/MyDrive/cropStudy/sample.JPG'
    img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_COLOR : 컬러 이미지

    #이미지 화면에 출력
    cv2_imshow(img)

    #이미지 저장
    cv2.imwrite('/gdrive/MyDrive/cropStudy/grayImage.png',img)


#함수 실행
if __name__ == '__main__':
    handle_image()

 

 

 

참고 사이트

imread

preventionyun.tistory.com/25

 

01. 이미지 read, imread 함수

* 앞으로 작성할 글은 "openCV 3 computer vision application programming cookbook" 서적을 바탕으로 학습하고 추가 스터디하여 작성할 것이다. opencv에서 이미지를 읽어오는 imread 함수에 대해 알아보겠다...

preventionyun.tistory.com

imshow / imwrite

opencv-python.readthedocs.io/en/latest/doc/01.imageStart/imageStart.html

 

이미지 다루기 — gramman 0.1 documentation

cv2.imread() 함수를 이용하여 이미지 파일을 읽습니다. 이미지 파일의 경로는 절대/상대경로가 가능합니다. 이미지 읽기의 flag는 3가지가 있습니다. Note 3개의 flag대신에 1, 0, -1을 사용해도 됩니다.

opencv-python.readthedocs.io

https://leembedded.tistory.com/14?category=698391

 

OpenCV - 이미지 읽기, 쓰기 및 표시하기 (1)

실행 코드 실행 결과 출처: Inflearn OpenCV를 활용한 명함인식 기능 구현 강좌 - 이미지 읽기, 쓰기 및 표시하기 (1)

leembedded.tistory.com

 

728x90