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라는 다른이름으로 같은 경로에 저장해보자
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
imshow / imwrite
opencv-python.readthedocs.io/en/latest/doc/01.imageStart/imageStart.html
https://leembedded.tistory.com/14?category=698391
'졸업프로젝트 > OpenCV' 카테고리의 다른 글
[OpenCV] 이미지에서 특정 이미지 찾아내기 (2) | 2021.01.18 |
---|---|
[OpenCV]문제지에서 문제 크롭(2) (0) | 2021.01.12 |
[OpenCV]Morphological Transformation (0) | 2021.01.12 |
[OpenCV] 문제지에서 문제 크롭(1) (0) | 2021.01.12 |
[OpenCV] 이미지 이진화 (0) | 2021.01.11 |