Google Colaboratory에서 Cloud Vision API를 치기
Google Colaboratory 노트북 만들기
에서 "PYTHON 3의 새로운 노트북"을 만듭니다.
Cloud Vision용 pip 설치
Cloud Vision API를 사용하는 경우 pip를 설치해야 합니다. 설치 후 Restart를 요구하기 때문에, 이 단계는 노트북의 제일 먼저 해 두는 것이 좋다.
!pip install --upgrade google-cloud-vision
런타임을 다시 시작하라는 메시지가 표시되면 다시 시작합니다.
Google 드라이브에 이미지 업로드
Google 드라이브에 새 폴더를 만들고 그 안에 구문 분석하려는 이미지를 밀어 넣습니다.
노트북에서 파일 지정으로 업로드하거나 Google Cloud Storage에서 이미지를 다운로드하거나 할 수 있지만, 여러 이미지를 간편하게 시도한다면 Google Drive가 가장 간편하다고 생각한다.
Google 드라이브 마운트
from google.colab import drive
drive.mount('/content/gdrive')
drive.mount
를 하면, Google Drive의 내용을 지정한 패스에 마운트 할 수 있어 프로그램내에서 파일로서 참조할 수 있게 된다.
인증하다
최초 실행시에는 인증이 요구된다. 브라우저에서 링크를 열고 인증을 하면, 마지막에 표시되는 인증 코드를 Notebook측의 텍스트 필드에 박아 엔터를 누른다.
디렉토리의 이미지 파일 목록을 가져옵니다.
import glob
src_files = glob.glob('/content/gdrive/My Drive/visiontest/*.jpg')
src_files.sort()
for f in src_files:
print(f)
위에서 마운트 한 패스를 이용하여 방금 업로드한 jpg 파일의 목록을 가져옵니다. 로그에 파일의 리스트가 표시되지 않는 경우는 패스나 무언가가 잘못되어 있으므로 확인한다.
Cloud Vision API 치기
Cloud Vision API 사용
Google Cloud Console 을 열고 'API 및 서비스'에서 Cloud Vision API를 활성화합니다. 프로젝트가 없으면 새 프로젝트를 만듭니다. 덧붙여 Cloud Vision API는 유료의 API이므로 지불 설정을 완료시키지 않으면 올바르게 두드릴 수 없기 때문에 주의.
서비스 계정 키 만들기
"인증 정보"에서 API를 두드리는 서비스 계정 키를 만듭니다. 생성된 JSON 파일을 Google Drive의 이전 디렉토리에 업로드합니다. 여기에 credentials.json
라는 이름으로 업로드했습니다.
업로드 대상 디렉토리가 공개적으로 공유되지 않았는지 확인합니다. 이 서비스 계정 키가 외부로 유출되면 API를 두드려 트러블로 이어질 위험이 있으므로 취급에 충분히 주의한다. 보다 안전한 방법으로 관리하고 싶지만, 현재는 Google Colab상에서 사용하는 경우는 특별 안전한 방법이 존재하지 않는 모양. Google 드라이브에 업로드하는 것이 불안한 경우 file.upload를 사용하여 런타임에 업로드하는 방법을 고려해 보세요.
서비스 계정 키 파일 로드
import os
import os.path
import errno
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
cred_path = '/content/gdrive/My Drive/visiontest/credentials.json'
if os.path.exists(cred_path) == False:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), cred_path)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = cred_path
서비스 계정 키 파일을 로드합니다. 파일이 존재하지 않는 경우는 에러를 발생시켜 처리가 앞으로 진행되지 않게 하고 있다.
물체 감지
폴더의 이미지 한 장에 대해 물체 감지 API를 두드려 결과를 objects
사전에 저장합니다. Cloud Vision API는 유료이므로 시행착오 과정에서 쓸데없이 두드리는 일이 없도록 결과를 캐시하고 나중에 참조하는 형태로 하는 것이 좋다.
import io
from google.cloud import vision
from google.cloud.vision import types
objects = {}
client = vision.ImageAnnotatorClient()
for file in src_files:
with io.open(file, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
res = client.object_localization(
image=image).localized_object_annotations
objects[file] = res
실행 결과 보기
from matplotlib import pyplot as plt
from PIL import Image
from PIL import ImageDraw
def draw_object_boxes(f, objects):
im = Image.open(f)
w, h = im.size
draw = ImageDraw.Draw(im)
for obj in objects:
color = '#ffff00'
box = [(v.x * w, v.y * h) for v in obj.bounding_poly.normalized_vertices]
xs = [(v.x * w) for v in obj.bounding_poly.normalized_vertices]
ys = [(v.y * h) for v in obj.bounding_poly.normalized_vertices]
draw.line(box + [box[0]], width=20, fill=color)
return im
for file in files:
plt.figure(figsize=(5,3))
plt.imshow(draw_object_boxes(file, objects[file]))
plt.show()
Reference
이 문제에 관하여(Google Colaboratory에서 Cloud Vision API를 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/croquette0212/items/1931f5e630fae029a221
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Cloud Vision API를 사용하는 경우 pip를 설치해야 합니다. 설치 후 Restart를 요구하기 때문에, 이 단계는 노트북의 제일 먼저 해 두는 것이 좋다.
!pip install --upgrade google-cloud-vision
런타임을 다시 시작하라는 메시지가 표시되면 다시 시작합니다.
Google 드라이브에 이미지 업로드
Google 드라이브에 새 폴더를 만들고 그 안에 구문 분석하려는 이미지를 밀어 넣습니다.
노트북에서 파일 지정으로 업로드하거나 Google Cloud Storage에서 이미지를 다운로드하거나 할 수 있지만, 여러 이미지를 간편하게 시도한다면 Google Drive가 가장 간편하다고 생각한다.
Google 드라이브 마운트
from google.colab import drive
drive.mount('/content/gdrive')
drive.mount
를 하면, Google Drive의 내용을 지정한 패스에 마운트 할 수 있어 프로그램내에서 파일로서 참조할 수 있게 된다.
인증하다
최초 실행시에는 인증이 요구된다. 브라우저에서 링크를 열고 인증을 하면, 마지막에 표시되는 인증 코드를 Notebook측의 텍스트 필드에 박아 엔터를 누른다.
디렉토리의 이미지 파일 목록을 가져옵니다.
import glob
src_files = glob.glob('/content/gdrive/My Drive/visiontest/*.jpg')
src_files.sort()
for f in src_files:
print(f)
위에서 마운트 한 패스를 이용하여 방금 업로드한 jpg 파일의 목록을 가져옵니다. 로그에 파일의 리스트가 표시되지 않는 경우는 패스나 무언가가 잘못되어 있으므로 확인한다.
Cloud Vision API 치기
Cloud Vision API 사용
Google Cloud Console 을 열고 'API 및 서비스'에서 Cloud Vision API를 활성화합니다. 프로젝트가 없으면 새 프로젝트를 만듭니다. 덧붙여 Cloud Vision API는 유료의 API이므로 지불 설정을 완료시키지 않으면 올바르게 두드릴 수 없기 때문에 주의.
서비스 계정 키 만들기
"인증 정보"에서 API를 두드리는 서비스 계정 키를 만듭니다. 생성된 JSON 파일을 Google Drive의 이전 디렉토리에 업로드합니다. 여기에 credentials.json
라는 이름으로 업로드했습니다.
업로드 대상 디렉토리가 공개적으로 공유되지 않았는지 확인합니다. 이 서비스 계정 키가 외부로 유출되면 API를 두드려 트러블로 이어질 위험이 있으므로 취급에 충분히 주의한다. 보다 안전한 방법으로 관리하고 싶지만, 현재는 Google Colab상에서 사용하는 경우는 특별 안전한 방법이 존재하지 않는 모양. Google 드라이브에 업로드하는 것이 불안한 경우 file.upload를 사용하여 런타임에 업로드하는 방법을 고려해 보세요.
서비스 계정 키 파일 로드
import os
import os.path
import errno
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
cred_path = '/content/gdrive/My Drive/visiontest/credentials.json'
if os.path.exists(cred_path) == False:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), cred_path)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = cred_path
서비스 계정 키 파일을 로드합니다. 파일이 존재하지 않는 경우는 에러를 발생시켜 처리가 앞으로 진행되지 않게 하고 있다.
물체 감지
폴더의 이미지 한 장에 대해 물체 감지 API를 두드려 결과를 objects
사전에 저장합니다. Cloud Vision API는 유료이므로 시행착오 과정에서 쓸데없이 두드리는 일이 없도록 결과를 캐시하고 나중에 참조하는 형태로 하는 것이 좋다.
import io
from google.cloud import vision
from google.cloud.vision import types
objects = {}
client = vision.ImageAnnotatorClient()
for file in src_files:
with io.open(file, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
res = client.object_localization(
image=image).localized_object_annotations
objects[file] = res
실행 결과 보기
from matplotlib import pyplot as plt
from PIL import Image
from PIL import ImageDraw
def draw_object_boxes(f, objects):
im = Image.open(f)
w, h = im.size
draw = ImageDraw.Draw(im)
for obj in objects:
color = '#ffff00'
box = [(v.x * w, v.y * h) for v in obj.bounding_poly.normalized_vertices]
xs = [(v.x * w) for v in obj.bounding_poly.normalized_vertices]
ys = [(v.y * h) for v in obj.bounding_poly.normalized_vertices]
draw.line(box + [box[0]], width=20, fill=color)
return im
for file in files:
plt.figure(figsize=(5,3))
plt.imshow(draw_object_boxes(file, objects[file]))
plt.show()
Reference
이 문제에 관하여(Google Colaboratory에서 Cloud Vision API를 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/croquette0212/items/1931f5e630fae029a221
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from google.colab import drive
drive.mount('/content/gdrive')
drive.mount
를 하면, Google Drive의 내용을 지정한 패스에 마운트 할 수 있어 프로그램내에서 파일로서 참조할 수 있게 된다.인증하다
최초 실행시에는 인증이 요구된다. 브라우저에서 링크를 열고 인증을 하면, 마지막에 표시되는 인증 코드를 Notebook측의 텍스트 필드에 박아 엔터를 누른다.
디렉토리의 이미지 파일 목록을 가져옵니다.
import glob
src_files = glob.glob('/content/gdrive/My Drive/visiontest/*.jpg')
src_files.sort()
for f in src_files:
print(f)
위에서 마운트 한 패스를 이용하여 방금 업로드한 jpg 파일의 목록을 가져옵니다. 로그에 파일의 리스트가 표시되지 않는 경우는 패스나 무언가가 잘못되어 있으므로 확인한다.
Cloud Vision API 치기
Cloud Vision API 사용
Google Cloud Console 을 열고 'API 및 서비스'에서 Cloud Vision API를 활성화합니다. 프로젝트가 없으면 새 프로젝트를 만듭니다. 덧붙여 Cloud Vision API는 유료의 API이므로 지불 설정을 완료시키지 않으면 올바르게 두드릴 수 없기 때문에 주의.
서비스 계정 키 만들기
"인증 정보"에서 API를 두드리는 서비스 계정 키를 만듭니다. 생성된 JSON 파일을 Google Drive의 이전 디렉토리에 업로드합니다. 여기에 credentials.json
라는 이름으로 업로드했습니다.
업로드 대상 디렉토리가 공개적으로 공유되지 않았는지 확인합니다. 이 서비스 계정 키가 외부로 유출되면 API를 두드려 트러블로 이어질 위험이 있으므로 취급에 충분히 주의한다. 보다 안전한 방법으로 관리하고 싶지만, 현재는 Google Colab상에서 사용하는 경우는 특별 안전한 방법이 존재하지 않는 모양. Google 드라이브에 업로드하는 것이 불안한 경우 file.upload를 사용하여 런타임에 업로드하는 방법을 고려해 보세요.
서비스 계정 키 파일 로드
import os
import os.path
import errno
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
cred_path = '/content/gdrive/My Drive/visiontest/credentials.json'
if os.path.exists(cred_path) == False:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), cred_path)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = cred_path
서비스 계정 키 파일을 로드합니다. 파일이 존재하지 않는 경우는 에러를 발생시켜 처리가 앞으로 진행되지 않게 하고 있다.
물체 감지
폴더의 이미지 한 장에 대해 물체 감지 API를 두드려 결과를 objects
사전에 저장합니다. Cloud Vision API는 유료이므로 시행착오 과정에서 쓸데없이 두드리는 일이 없도록 결과를 캐시하고 나중에 참조하는 형태로 하는 것이 좋다.
import io
from google.cloud import vision
from google.cloud.vision import types
objects = {}
client = vision.ImageAnnotatorClient()
for file in src_files:
with io.open(file, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
res = client.object_localization(
image=image).localized_object_annotations
objects[file] = res
실행 결과 보기
from matplotlib import pyplot as plt
from PIL import Image
from PIL import ImageDraw
def draw_object_boxes(f, objects):
im = Image.open(f)
w, h = im.size
draw = ImageDraw.Draw(im)
for obj in objects:
color = '#ffff00'
box = [(v.x * w, v.y * h) for v in obj.bounding_poly.normalized_vertices]
xs = [(v.x * w) for v in obj.bounding_poly.normalized_vertices]
ys = [(v.y * h) for v in obj.bounding_poly.normalized_vertices]
draw.line(box + [box[0]], width=20, fill=color)
return im
for file in files:
plt.figure(figsize=(5,3))
plt.imshow(draw_object_boxes(file, objects[file]))
plt.show()
Reference
이 문제에 관하여(Google Colaboratory에서 Cloud Vision API를 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/croquette0212/items/1931f5e630fae029a221
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import glob
src_files = glob.glob('/content/gdrive/My Drive/visiontest/*.jpg')
src_files.sort()
for f in src_files:
print(f)
Cloud Vision API 사용
Google Cloud Console 을 열고 'API 및 서비스'에서 Cloud Vision API를 활성화합니다. 프로젝트가 없으면 새 프로젝트를 만듭니다. 덧붙여 Cloud Vision API는 유료의 API이므로 지불 설정을 완료시키지 않으면 올바르게 두드릴 수 없기 때문에 주의.
서비스 계정 키 만들기
"인증 정보"에서 API를 두드리는 서비스 계정 키를 만듭니다. 생성된 JSON 파일을 Google Drive의 이전 디렉토리에 업로드합니다. 여기에
credentials.json
라는 이름으로 업로드했습니다.업로드 대상 디렉토리가 공개적으로 공유되지 않았는지 확인합니다. 이 서비스 계정 키가 외부로 유출되면 API를 두드려 트러블로 이어질 위험이 있으므로 취급에 충분히 주의한다. 보다 안전한 방법으로 관리하고 싶지만, 현재는 Google Colab상에서 사용하는 경우는 특별 안전한 방법이 존재하지 않는 모양. Google 드라이브에 업로드하는 것이 불안한 경우 file.upload를 사용하여 런타임에 업로드하는 방법을 고려해 보세요.
서비스 계정 키 파일 로드
import os
import os.path
import errno
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
cred_path = '/content/gdrive/My Drive/visiontest/credentials.json'
if os.path.exists(cred_path) == False:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), cred_path)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = cred_path
서비스 계정 키 파일을 로드합니다. 파일이 존재하지 않는 경우는 에러를 발생시켜 처리가 앞으로 진행되지 않게 하고 있다.
물체 감지
폴더의 이미지 한 장에 대해 물체 감지 API를 두드려 결과를
objects
사전에 저장합니다. Cloud Vision API는 유료이므로 시행착오 과정에서 쓸데없이 두드리는 일이 없도록 결과를 캐시하고 나중에 참조하는 형태로 하는 것이 좋다.import io
from google.cloud import vision
from google.cloud.vision import types
objects = {}
client = vision.ImageAnnotatorClient()
for file in src_files:
with io.open(file, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
res = client.object_localization(
image=image).localized_object_annotations
objects[file] = res
실행 결과 보기
from matplotlib import pyplot as plt
from PIL import Image
from PIL import ImageDraw
def draw_object_boxes(f, objects):
im = Image.open(f)
w, h = im.size
draw = ImageDraw.Draw(im)
for obj in objects:
color = '#ffff00'
box = [(v.x * w, v.y * h) for v in obj.bounding_poly.normalized_vertices]
xs = [(v.x * w) for v in obj.bounding_poly.normalized_vertices]
ys = [(v.y * h) for v in obj.bounding_poly.normalized_vertices]
draw.line(box + [box[0]], width=20, fill=color)
return im
for file in files:
plt.figure(figsize=(5,3))
plt.imshow(draw_object_boxes(file, objects[file]))
plt.show()
Reference
이 문제에 관하여(Google Colaboratory에서 Cloud Vision API를 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/croquette0212/items/1931f5e630fae029a221
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from matplotlib import pyplot as plt
from PIL import Image
from PIL import ImageDraw
def draw_object_boxes(f, objects):
im = Image.open(f)
w, h = im.size
draw = ImageDraw.Draw(im)
for obj in objects:
color = '#ffff00'
box = [(v.x * w, v.y * h) for v in obj.bounding_poly.normalized_vertices]
xs = [(v.x * w) for v in obj.bounding_poly.normalized_vertices]
ys = [(v.y * h) for v in obj.bounding_poly.normalized_vertices]
draw.line(box + [box[0]], width=20, fill=color)
return im
for file in files:
plt.figure(figsize=(5,3))
plt.imshow(draw_object_boxes(file, objects[file]))
plt.show()
Reference
이 문제에 관하여(Google Colaboratory에서 Cloud Vision API를 치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/croquette0212/items/1931f5e630fae029a221텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)