Ruby에서 Cloud Vision API를 사용하는 샘플 코드
Vision AI는 Google에서 제공하는 사전 훈련된 기계 학습 모델 세트입니다. Cloud Vision API를 사용하면 애플리케이션 내에서 비전 감지 기능을 쉽게 통합할 수 있습니다.
API에 익숙하지 않은 분들은 응용 프로그램에서 사용하기에는 너무 복잡하다고 생각하고 documentation을 끝까지 읽지 못하고 포기할 수도 있습니다. 괜찮아요. Ruby 애플리케이션에서 Cloud Vision API를 쉽게 사용할 수 있도록 샘플 코드를 준비했습니다.
시작하기 전에 API 키를 생성하고 Cloud Vision API를 활성화해야 합니다. 아직 해보지 않으셨다면 official guide 을 따라해보세요.
샘플 코드는 다음과 같습니다.
*사용된 이미지 파일은 컴퓨터에 있어야 합니다.
require 'base64'
require 'json'
require 'net/https'
# Step 1 - Set path to the image file, API key, and API URL.
IMAGE_FILE = './sample.jpg'
API_KEY = 'XXXXXXXXXX' # Don't forget to protect your API key.
API_URL = "https://vision.googleapis.com/v1/images:annotate?key=#{API_KEY}"
# Step 2 - Convert the image to base64 format.
base64_image = Base64.strict_encode64(File.new(IMAGE_FILE, 'rb').read)
# Step 3 - Set request JSON body.
body = {
requests: [{
image: {
content: base64_image
},
features: [
{
type: 'LABEL_DETECTION', # Details are below.
maxResults: 3 # The number of results you would like to get
}
]
}]
}
# Step 4 - Send request.
uri = URI.parse(API_URL)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
response = https.request(request, body.to_json)
# Step 5 - Print the response in the console.
puts response.body
Cloud Vision API와 함께 사용할 수 있는 주요 기능은 다음과 같습니다.
자세한 내용 보기here .
시도해 봅시다. 다음은 LABEL_DETECTION, FACE_DETECTION 및 OBJECT_LOCALIZATION의 결과를 예로 든 것입니다.
LABEL_DETECTION
{
"responses": [
{
"labelAnnotations": [
{
"mid": "/m/01yrx",
"description": "Cat",
"score": 0.99598557,
"topicality": 0.99598557
},
{
"mid": "/m/04rky",
"description": "Mammal",
"score": 0.9890478,
"topicality": 0.9890478
},
{
"mid": "/m/09686",
"description": "Vertebrate",
"score": 0.9851104,
"topicality": 0.9851104
}
]
}
]
}
얼굴 인식
{
"responses": [
{
"faceAnnotations": [
{
"boundingPoly": {
"vertices": [
{
"x": 85,
"y": 32
},
{
"x": 228,
"y": 32
},
{
"x": 228,
"y": 198
},
{
"x": 85,
"y": 198
}
]
},
"fdBoundingPoly": {
"vertices": [
{
"x": 96,
"y": 53
},
{
"x": 220,
"y": 53
},
{
"x": 220,
"y": 183
},
{
"x": 96,
"y": 183
}
]
},
"landmarks": [
{
"type": "LEFT_EYE",
"position": {
"x": 137.98528,
"y": 107.89613,
"z": -0.0003142357
}
},
{
"type": "RIGHT_EYE",
"position": {
"x": 182.86436,
"y": 108.30501,
"z": 3.7897882
}
},
{
"type": "LEFT_OF_LEFT_EYEBROW",
"position": {
"x": 124.37836,
"y": 98.03804,
"z": 3.9364848
}
},
{
"type": "RIGHT_OF_LEFT_EYEBROW",
"position": {
"x": 151.22585,
"y": 97.4466,
"z": -5.1410694
}
},
.
.
.
],
"rollAngle": 0.5700898,
"panAngle": 5.027816,
"tiltAngle": 7.44839,
"detectionConfidence": 0.89301175,
"landmarkingConfidence": 0.7306799,
"joyLikelihood": "LIKELY", # The face seems happy!
"sorrowLikelihood": "VERY_UNLIKELY",
"angerLikelihood": "VERY_UNLIKELY",
"surpriseLikelihood": "VERY_UNLIKELY",
"underExposedLikelihood": "VERY_UNLIKELY",
"blurredLikelihood": "VERY_UNLIKELY",
"headwearLikelihood": "VERY_UNLIKELY"
}
]
}
]
}
OBJECT_LOCALIZATION
{
"responses": [
{
"localizedObjectAnnotations": [
{
"mid": "/m/0199g",
"name": "Bicycle",
"score": 0.86724836,
"boundingPoly": {
"normalizedVertices": [
{
"x": 0.6728187,
"y": 0.673309
},
{
"x": 0.9256048,
"y": 0.673309
},
{
"x": 0.9256048,
"y": 0.92176706
},
{
"x": 0.6728187,
"y": 0.92176706
}
]
}
},
{
"mid": "/m/02dgv",
"name": "Door",
"score": 0.84919137,
"boundingPoly": {
"normalizedVertices": [
{
"x": 0.40092757,
"y": 0.31736398
},
{
"x": 0.51375383,
"y": 0.31736398
},
{
"x": 0.51375383,
"y": 0.7087951
},
{
"x": 0.40092757,
"y": 0.7087951
}
]
}
},
{
"mid": "/m/0d4v4",
"name": "Window",
"score": 0.8491046,
"boundingPoly": {
"normalizedVertices": [
{
"x": 0.11334894,
"y": 0.2133823
},
{
"x": 0.28181157,
"y": 0.2133823
},
{
"x": 0.28181157,
"y": 0.5806629
},
{
"x": 0.11334894,
"y": 0.5806629
}
]
}
}
]
}
]
}
짜잔! 이제 Vision AI로 Ruby 애플리케이션을 구축할 준비가 되었습니다. 앞으로 혁신적인 제품과 서비스를 보게 되어 기쁩니다.
Reference
이 문제에 관하여(Ruby에서 Cloud Vision API를 사용하는 샘플 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/junko911/sample-code-to-use-cloud-vision-api-with-ruby-18f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)