안녕하세요. 언제나휴일에 언휴예요.
영상 처리를 위한 기술로 OpenCV는 잘 알려져 있죠.
여기에서는 Colab 환경에서 Python 언어로 OpenCV 기술 사용하는 것을 알아볼 거예요.
Colab은 구글에서 제공하는 가상 환경입니다. 별도의 Python 개발 환경을 구축하지 않고 사용할 수 있습니다.
1. 버전 확인
먼저 버전을 확인합시다.
OpenCV를 사용하기 위해 cv2를 import합니다.
cv2의 __version__ 속성을 통해 버전 정보를 확인할 수 있어요.
import cv2 cv2.__version__
실행 결과
4.1.2
2. 구글 드라이브 마운트 시키기
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)
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)