OpenCV in colab – 버전 확인 및 이미지 로딩

안녕하세요. 언제나휴일에 언휴예요.

영상 처리를 위한 기술로 OpenCV는 잘 알려져 있죠.

여기에서는 Colab 환경에서 Python  언어로 OpenCV 기술 사용하는 것을 알아볼 거예요.

Colab은 구글에서 제공하는 가상 환경입니다. 별도의 Python 개발 환경을 구축하지 않고 사용할 수 있습니다.

1. 버전 확인

먼저 버전을 확인합시다.

OpenCV를 사용하기 위해 cv2를 import합니다.

cv2의 __version__ 속성을 통해 버전 정보를 확인할 수 있어요.

import cv2
cv2.__version__

실행 결과

4.1.2

2. 구글 드라이브 마운트 시키기

Colab에서 작업하다보니 이미지 파일 등을 로딩하여 사용할 때 자신의 컴퓨터 폴더에 파일을 사용하는 것에 제약이 있습니다.

이러한 제약은 구글 드라이브를 마운트하여 사용하여 극복할 수 있습니다.

Colab 에서 왼쪽 메뉴에서 파일을 선택하세요.

Colab 파일 메뉴

Colab의 파일 메뉴를 선택한 후에 드라이브 마운트 메뉴를 선택하면 구글 드라이브와 연동할 수 있어요.

드라이브 마운트

다음은 드라이브 마운트 선택 후에 자신의 구글 드라이브와 경로를 연동하고 있는 모습입니다.

구글 드라이브 마운트 결과

3. 이미지 로드

OpenCV를 사용하기 위해 cv2를 import합니다.

google의  colab에서 이미지를 시각화하기 위해 cv2_imshow를 import해야 합니다.

import cv2
from google.colab.patches import cv2_imshow

이미지를 로딩을 위해 드라이브 마운트한 파일을 하나 선택하기로 할게요.

경로는 마운트한 파일을 선택하여 왼쪽 마우스 버튼을 클릭하면 경로를 복사할 수 있어요.

마운트한 파일 경로 복사
path = '/content/drive/MyDrive/files/eh.jpg'

이미지를 로딩할 때 cv2의 imread 메서드를 사용합니다.

cv2.imread(path, flag)

flag –

cv2.IMREAD_COLOR – COLOR로 읽어 옮

cv2.IMREAD_GRAYSCALE – 흑백으로 읽어 옮

cv2.IMREAD_UNCHANGED – 원래 이미지에 맞게 읽어 옮

image = cv2.imread(path,cv2.IMREAD_COLOR)

로딩한 이미지를 시각화할 때 cv2_imshow 함수를 사용합니다.

cv2_imshow(image)

전체 소스 코드

import cv2
from google.colab.patches import cv2_imshow
path = '/content/drive/MyDrive/files/eh.jpg'

image = cv2.imread(path,cv2.IMREAD_COLOR)
cv2_imshow(image)
eh 이미지 시각화 결과

4. 웹 이미지 로딩

이번에는 웹 상에 이미지를 시각화 해 봅시다.

웹 서버에 요청하기 위해 urllib.request를 import 합니다.

OpenCV에서 이미지는 배열로 표현합니다. numpy 모듈도 import 할게요.

import cv2
import numpy as np
from google.colab.patches import cv2_imshow
import urllib.request

웹 상에 있는 이미지 주소를 입력 인자로 로딩하는 메서드를 정의합시다.

def load_online_image(url):

먼저 urlib.request의 urlopen 메서드로 웹 서버에 미지를 요청합니다.

  resp = urllib.request.urlopen(url)

요청 결과를 읽어와서 bytearray로 변환 후에 이를 입력 인자로 numpy 배열을 생성합니다. 배열의 데이터는 0~255값을 표현할 수 있는 unit8로 지정할게요.

  image = np.asarray(bytearray(resp.read()), dtype='uint8')

이미지를 decoding한 후에 반환합니다.

  image = cv2.imdecode(image, cv2.IMREAD_COLOR)
  return image

다음은 load_online_image 함수를 정의한 코드입니다.

def load_online_image(url):
  resp = urllib.request.urlopen(url)
  image = np.asarray(bytearray(resp.read()), dtype='uint8')
  image = cv2.imdecode(image, cv2.IMREAD_COLOR)
  return image

이제 온라인 상에 있는 이미지를 로딩하는 코드를 작성하여 확인합시다.

표시하고자 하는 온라인 상의 이미지 경로를 복사하여 이를 로딩하여 시각화해 봅시다.

image_url ='https://t1.daumcdn.net/cfile/tistory/996D34345BBEAD5117'
image = load_online_image(image_url)
cv2_imshow(image)

전체 코드

import cv2
import numpy as np
from google.colab.patches import cv2_imshow
import urllib.request

def load_online_image(url):
  resp = urllib.request.urlopen(url)
  image = np.asarray(bytearray(resp.read()), dtype='uint8')
  image = cv2.imdecode(image, cv2.IMREAD_COLOR)
  return image
image_url ='https://t1.daumcdn.net/cfile/tistory/996D34345BBEAD5117'
image = load_online_image(image_url)

cv2_imshow(image)
온라인 이미지