google-cloud-vision 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +2 -9
- data/LICENSE +1 -1
- data/README.md +94 -0
- data/lib/google/cloud/vision.rb +200 -535
- data/lib/google/cloud/vision/v1.rb +129 -55
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/image_annotator.rb +9 -0
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search.rb +88 -0
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search_service.rb +539 -0
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/text_annotation.rb +3 -3
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/web_detection.rb +2 -1
- data/lib/google/cloud/vision/{version.rb → v1/doc/google/protobuf/empty.rb} +13 -6
- data/lib/google/cloud/vision/v1/doc/google/protobuf/field_mask.rb +230 -0
- data/lib/google/cloud/vision/v1/doc/google/protobuf/timestamp.rb +109 -0
- data/lib/google/cloud/vision/v1/geometry_pb.rb +1 -0
- data/lib/google/cloud/vision/v1/helpers.rb +972 -0
- data/lib/google/cloud/vision/v1/image_annotator_client.rb +4 -4
- data/lib/google/cloud/vision/v1/image_annotator_pb.rb +5 -0
- data/lib/google/cloud/vision/v1/image_annotator_services_pb.rb +2 -1
- data/lib/google/cloud/vision/v1/product_search_client.rb +1337 -0
- data/lib/google/cloud/vision/v1/product_search_client_config.json +116 -0
- data/lib/google/cloud/vision/v1/product_search_pb.rb +45 -0
- data/lib/google/cloud/vision/v1/product_search_service_pb.rb +191 -0
- data/lib/google/cloud/vision/v1/product_search_service_services_pb.rb +224 -0
- data/lib/google/cloud/vision/v1p3beta1.rb +233 -0
- data/lib/google/cloud/vision/v1p3beta1/credentials.rb +42 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/geometry.rb +72 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/image_annotator.rb +763 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search.rb +154 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search_service.rb +533 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/text_annotation.rb +254 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/web_detection.rb +101 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/longrunning/operations.rb +93 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/any.rb +130 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/empty.rb +29 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/field_mask.rb +230 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/timestamp.rb +109 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/wrappers.rb +90 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/rpc/status.rb +84 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/type/color.rb +156 -0
- data/lib/google/cloud/vision/v1p3beta1/doc/google/type/latlng.rb +65 -0
- data/lib/google/cloud/vision/v1p3beta1/geometry_pb.rb +43 -0
- data/lib/google/cloud/vision/v1p3beta1/helpers.rb +972 -0
- data/lib/google/cloud/vision/v1p3beta1/image_annotator_client.rb +302 -0
- data/lib/google/cloud/vision/v1p3beta1/image_annotator_client_config.json +36 -0
- data/lib/google/cloud/vision/v1p3beta1/image_annotator_pb.rb +304 -0
- data/lib/google/cloud/vision/v1p3beta1/image_annotator_services_pb.rb +55 -0
- data/lib/google/cloud/vision/v1p3beta1/product_search_client.rb +1351 -0
- data/lib/google/cloud/vision/v1p3beta1/product_search_client_config.json +116 -0
- data/lib/google/cloud/vision/v1p3beta1/product_search_pb.rb +64 -0
- data/lib/google/cloud/vision/v1p3beta1/product_search_service_pb.rb +191 -0
- data/lib/google/cloud/vision/v1p3beta1/product_search_service_services_pb.rb +222 -0
- data/lib/google/cloud/vision/v1p3beta1/text_annotation_pb.rb +94 -0
- data/lib/google/cloud/vision/v1p3beta1/web_detection_pb.rb +51 -0
- metadata +53 -122
- data/AUTHENTICATION.md +0 -179
- data/CHANGELOG.md +0 -109
- data/CODE_OF_CONDUCT.md +0 -40
- data/CONTRIBUTING.md +0 -188
- data/LOGGING.md +0 -32
- data/OVERVIEW.md +0 -202
- data/TROUBLESHOOTING.md +0 -37
- data/lib/google-cloud-vision.rb +0 -146
- data/lib/google/cloud/vision/annotate.rb +0 -303
- data/lib/google/cloud/vision/annotation.rb +0 -553
- data/lib/google/cloud/vision/annotation/crop_hint.rb +0 -126
- data/lib/google/cloud/vision/annotation/entity.rb +0 -225
- data/lib/google/cloud/vision/annotation/face.rb +0 -1497
- data/lib/google/cloud/vision/annotation/normalized_vertex.rb +0 -76
- data/lib/google/cloud/vision/annotation/object_localization.rb +0 -115
- data/lib/google/cloud/vision/annotation/properties.rb +0 -220
- data/lib/google/cloud/vision/annotation/safe_search.rb +0 -153
- data/lib/google/cloud/vision/annotation/text.rb +0 -1015
- data/lib/google/cloud/vision/annotation/vertex.rb +0 -91
- data/lib/google/cloud/vision/annotation/web.rb +0 -420
- data/lib/google/cloud/vision/credentials.rb +0 -57
- data/lib/google/cloud/vision/image.rb +0 -832
- data/lib/google/cloud/vision/location.rb +0 -98
- data/lib/google/cloud/vision/project.rb +0 -367
- data/lib/google/cloud/vision/service.rb +0 -83
|
@@ -1,553 +0,0 @@
|
|
|
1
|
-
# Copyright 2016 Google LLC
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
require "google/cloud/vision/annotation/face"
|
|
17
|
-
require "google/cloud/vision/annotation/entity"
|
|
18
|
-
require "google/cloud/vision/annotation/text"
|
|
19
|
-
require "google/cloud/vision/annotation/safe_search"
|
|
20
|
-
require "google/cloud/vision/annotation/properties"
|
|
21
|
-
require "google/cloud/vision/annotation/crop_hint"
|
|
22
|
-
require "google/cloud/vision/annotation/web"
|
|
23
|
-
require "google/cloud/vision/annotation/object_localization"
|
|
24
|
-
|
|
25
|
-
module Google
|
|
26
|
-
module Cloud
|
|
27
|
-
module Vision
|
|
28
|
-
##
|
|
29
|
-
# # Annotation
|
|
30
|
-
#
|
|
31
|
-
# The results of all requested image annotations.
|
|
32
|
-
#
|
|
33
|
-
# See {Project#annotate} and {Image}.
|
|
34
|
-
#
|
|
35
|
-
# @example
|
|
36
|
-
# require "google/cloud/vision"
|
|
37
|
-
#
|
|
38
|
-
# vision = Google::Cloud::Vision.new
|
|
39
|
-
# image = vision.image "path/to/face.jpg"
|
|
40
|
-
#
|
|
41
|
-
# annotation = vision.annotate image, faces: true, labels: true
|
|
42
|
-
# annotation.faces.count #=> 1
|
|
43
|
-
# annotation.labels.count #=> 4
|
|
44
|
-
# annotation.text #=> nil
|
|
45
|
-
#
|
|
46
|
-
class Annotation
|
|
47
|
-
##
|
|
48
|
-
# @private The AnnotateImageResponse GRPC object.
|
|
49
|
-
attr_accessor :grpc
|
|
50
|
-
|
|
51
|
-
##
|
|
52
|
-
# @private Creates a new Annotation instance.
|
|
53
|
-
def initialize
|
|
54
|
-
@grpc = nil
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
##
|
|
58
|
-
# The results of face detection.
|
|
59
|
-
#
|
|
60
|
-
# @return [Array<Face>]
|
|
61
|
-
#
|
|
62
|
-
# @example
|
|
63
|
-
# require "google/cloud/vision"
|
|
64
|
-
#
|
|
65
|
-
# vision = Google::Cloud::Vision.new
|
|
66
|
-
# image = vision.image "path/to/face.jpg"
|
|
67
|
-
#
|
|
68
|
-
# annotation = vision.annotate image, faces: true
|
|
69
|
-
# annotation.faces.count #=> 1
|
|
70
|
-
# face = annotation.faces.first
|
|
71
|
-
#
|
|
72
|
-
def faces
|
|
73
|
-
@faces ||= Array(@grpc.face_annotations).map do |fa|
|
|
74
|
-
Face.from_grpc fa
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
##
|
|
79
|
-
# The first face result, if there is one.
|
|
80
|
-
#
|
|
81
|
-
# @return [Face]
|
|
82
|
-
#
|
|
83
|
-
# @example
|
|
84
|
-
# require "google/cloud/vision"
|
|
85
|
-
#
|
|
86
|
-
# vision = Google::Cloud::Vision.new
|
|
87
|
-
# image = vision.image "path/to/face.jpg"
|
|
88
|
-
#
|
|
89
|
-
# annotation = vision.annotate image, faces: 1
|
|
90
|
-
# face = annotation.face
|
|
91
|
-
#
|
|
92
|
-
def face
|
|
93
|
-
faces.first
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
##
|
|
97
|
-
# Whether there is at least one result from face detection.
|
|
98
|
-
#
|
|
99
|
-
# @return [Boolean]
|
|
100
|
-
#
|
|
101
|
-
# @example
|
|
102
|
-
# require "google/cloud/vision"
|
|
103
|
-
#
|
|
104
|
-
# vision = Google::Cloud::Vision.new
|
|
105
|
-
# image = vision.image "path/to/face.jpg"
|
|
106
|
-
#
|
|
107
|
-
# annotation = vision.annotate image, faces: 1
|
|
108
|
-
# annotation.face? #=> true
|
|
109
|
-
#
|
|
110
|
-
def face?
|
|
111
|
-
faces.any?
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
##
|
|
115
|
-
# The results of landmark detection.
|
|
116
|
-
#
|
|
117
|
-
# @return [Array<Entity>]
|
|
118
|
-
#
|
|
119
|
-
# @example
|
|
120
|
-
# require "google/cloud/vision"
|
|
121
|
-
#
|
|
122
|
-
# vision = Google::Cloud::Vision.new
|
|
123
|
-
# image = vision.image "path/to/landmark.jpg"
|
|
124
|
-
#
|
|
125
|
-
# annotation = vision.annotate image, landmarks: 1
|
|
126
|
-
# annotation.landmarks.count #=> 1
|
|
127
|
-
# landmark = annotation.landmarks.first
|
|
128
|
-
#
|
|
129
|
-
def landmarks
|
|
130
|
-
@landmarks ||= Array(@grpc.landmark_annotations).map do |lm|
|
|
131
|
-
Entity.from_grpc lm
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
##
|
|
136
|
-
# The first landmark result, if there is one.
|
|
137
|
-
#
|
|
138
|
-
# @return [Entity]
|
|
139
|
-
#
|
|
140
|
-
# @example
|
|
141
|
-
# require "google/cloud/vision"
|
|
142
|
-
#
|
|
143
|
-
# vision = Google::Cloud::Vision.new
|
|
144
|
-
# image = vision.image "path/to/landmark.jpg"
|
|
145
|
-
#
|
|
146
|
-
# annotation = vision.annotate image, landmarks: 1
|
|
147
|
-
# landmark = annotation.landmark
|
|
148
|
-
#
|
|
149
|
-
def landmark
|
|
150
|
-
landmarks.first
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
##
|
|
154
|
-
# Whether there is at least one result from landmark detection.
|
|
155
|
-
# detection.
|
|
156
|
-
#
|
|
157
|
-
# @return [Boolean]
|
|
158
|
-
#
|
|
159
|
-
# @example
|
|
160
|
-
# require "google/cloud/vision"
|
|
161
|
-
#
|
|
162
|
-
# vision = Google::Cloud::Vision.new
|
|
163
|
-
# image = vision.image "path/to/landmark.jpg"
|
|
164
|
-
#
|
|
165
|
-
# annotation = vision.annotate image, landmarks: 1
|
|
166
|
-
# annotation.landmark? #=> true
|
|
167
|
-
#
|
|
168
|
-
def landmark?
|
|
169
|
-
landmarks.any?
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
##
|
|
173
|
-
# The results of logo detection.
|
|
174
|
-
#
|
|
175
|
-
# @return [Array<Entity>]
|
|
176
|
-
#
|
|
177
|
-
# @example
|
|
178
|
-
# require "google/cloud/vision"
|
|
179
|
-
#
|
|
180
|
-
# vision = Google::Cloud::Vision.new
|
|
181
|
-
# image = vision.image "path/to/logo.jpg"
|
|
182
|
-
#
|
|
183
|
-
# annotation = vision.annotate image, logos: 1
|
|
184
|
-
# annotation.logos.count #=> 1
|
|
185
|
-
# logo = annotation.logos.first
|
|
186
|
-
#
|
|
187
|
-
def logos
|
|
188
|
-
@logos ||= Array(@grpc.logo_annotations).map do |lg|
|
|
189
|
-
Entity.from_grpc lg
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
##
|
|
194
|
-
# The first logo result, if there is one.
|
|
195
|
-
#
|
|
196
|
-
# @return [Entity]
|
|
197
|
-
#
|
|
198
|
-
# @example
|
|
199
|
-
# require "google/cloud/vision"
|
|
200
|
-
#
|
|
201
|
-
# vision = Google::Cloud::Vision.new
|
|
202
|
-
# image = vision.image "path/to/logo.jpg"
|
|
203
|
-
#
|
|
204
|
-
# annotation = vision.annotate image, logos: 1
|
|
205
|
-
# logo = annotation.logo
|
|
206
|
-
#
|
|
207
|
-
def logo
|
|
208
|
-
logos.first
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
##
|
|
212
|
-
# Whether there is at least one result from logo detection.
|
|
213
|
-
# detection.
|
|
214
|
-
#
|
|
215
|
-
# @return [Boolean]
|
|
216
|
-
#
|
|
217
|
-
# @example
|
|
218
|
-
# require "google/cloud/vision"
|
|
219
|
-
#
|
|
220
|
-
# vision = Google::Cloud::Vision.new
|
|
221
|
-
# image = vision.image "path/to/logo.jpg"
|
|
222
|
-
#
|
|
223
|
-
# annotation = vision.annotate image, logos: 1
|
|
224
|
-
# annotation.logo? #=> true
|
|
225
|
-
#
|
|
226
|
-
def logo?
|
|
227
|
-
logos.any?
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
##
|
|
231
|
-
# The results of label detection.
|
|
232
|
-
#
|
|
233
|
-
# @return [Array<Entity>]
|
|
234
|
-
#
|
|
235
|
-
# @example
|
|
236
|
-
# require "google/cloud/vision"
|
|
237
|
-
#
|
|
238
|
-
# vision = Google::Cloud::Vision.new
|
|
239
|
-
# image = vision.image "path/to/face.jpg"
|
|
240
|
-
#
|
|
241
|
-
# annotation = vision.annotate image, labels: 1
|
|
242
|
-
# annotation.labels.count #=> 1
|
|
243
|
-
# label = annotation.labels.first
|
|
244
|
-
#
|
|
245
|
-
def labels
|
|
246
|
-
@labels ||= Array(@grpc.label_annotations).map do |lb|
|
|
247
|
-
Entity.from_grpc lb
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
##
|
|
252
|
-
# The first label result, if there is one.
|
|
253
|
-
#
|
|
254
|
-
# @return [Entity]
|
|
255
|
-
#
|
|
256
|
-
# @example
|
|
257
|
-
# require "google/cloud/vision"
|
|
258
|
-
#
|
|
259
|
-
# vision = Google::Cloud::Vision.new
|
|
260
|
-
# image = vision.image "path/to/face.jpg"
|
|
261
|
-
#
|
|
262
|
-
# annotation = vision.annotate image, labels: 1
|
|
263
|
-
# label = annotation.label
|
|
264
|
-
#
|
|
265
|
-
def label
|
|
266
|
-
labels.first
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
##
|
|
270
|
-
# Whether there is at least one result from label detection.
|
|
271
|
-
# detection.
|
|
272
|
-
#
|
|
273
|
-
# @return [Boolean]
|
|
274
|
-
#
|
|
275
|
-
# @example
|
|
276
|
-
# require "google/cloud/vision"
|
|
277
|
-
#
|
|
278
|
-
# vision = Google::Cloud::Vision.new
|
|
279
|
-
# image = vision.image "path/to/face.jpg"
|
|
280
|
-
#
|
|
281
|
-
# annotation = vision.annotate image, labels: 1
|
|
282
|
-
# annotation.label? #=> true
|
|
283
|
-
#
|
|
284
|
-
def label?
|
|
285
|
-
labels.any?
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
##
|
|
289
|
-
# The results of text (OCR) detection.
|
|
290
|
-
#
|
|
291
|
-
# @return [Text]
|
|
292
|
-
#
|
|
293
|
-
# @example
|
|
294
|
-
# require "google/cloud/vision"
|
|
295
|
-
#
|
|
296
|
-
# vision = Google::Cloud::Vision.new
|
|
297
|
-
# image = vision.image "path/to/text.png"
|
|
298
|
-
#
|
|
299
|
-
# annotation = vision.annotate image, text: true
|
|
300
|
-
# text = annotation.text
|
|
301
|
-
#
|
|
302
|
-
def text
|
|
303
|
-
@text ||= \
|
|
304
|
-
Text.from_grpc(@grpc.text_annotations, @grpc.full_text_annotation)
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
##
|
|
308
|
-
# Whether there is a result from text (OCR) detection.
|
|
309
|
-
#
|
|
310
|
-
# @return [Boolean]
|
|
311
|
-
#
|
|
312
|
-
# @example
|
|
313
|
-
# require "google/cloud/vision"
|
|
314
|
-
#
|
|
315
|
-
# vision = Google::Cloud::Vision.new
|
|
316
|
-
# image = vision.image "path/to/text.png"
|
|
317
|
-
#
|
|
318
|
-
# annotation = vision.annotate image, text: true
|
|
319
|
-
# annotation.text? #=> true
|
|
320
|
-
#
|
|
321
|
-
def text?
|
|
322
|
-
!text.nil?
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
##
|
|
326
|
-
# The results of safe_search detection.
|
|
327
|
-
#
|
|
328
|
-
# @return [SafeSearch, nil]
|
|
329
|
-
#
|
|
330
|
-
# @example
|
|
331
|
-
# require "google/cloud/vision"
|
|
332
|
-
#
|
|
333
|
-
# vision = Google::Cloud::Vision.new
|
|
334
|
-
# image = vision.image "path/to/face.jpg"
|
|
335
|
-
#
|
|
336
|
-
# annotation = vision.annotate image, safe_search: true
|
|
337
|
-
# safe_search = annotation.safe_search
|
|
338
|
-
#
|
|
339
|
-
def safe_search
|
|
340
|
-
return nil unless @grpc.safe_search_annotation
|
|
341
|
-
@safe_search ||= SafeSearch.from_grpc(@grpc.safe_search_annotation)
|
|
342
|
-
end
|
|
343
|
-
|
|
344
|
-
##
|
|
345
|
-
# Whether there is a result for safe_search detection.
|
|
346
|
-
# detection.
|
|
347
|
-
#
|
|
348
|
-
# @return [Boolean]
|
|
349
|
-
#
|
|
350
|
-
# @example
|
|
351
|
-
# require "google/cloud/vision"
|
|
352
|
-
#
|
|
353
|
-
# vision = Google::Cloud::Vision.new
|
|
354
|
-
# image = vision.image "path/to/face.jpg"
|
|
355
|
-
#
|
|
356
|
-
# annotation = vision.annotate image, safe_search: true
|
|
357
|
-
# annotation.safe_search? #=> true
|
|
358
|
-
#
|
|
359
|
-
def safe_search?
|
|
360
|
-
!safe_search.nil?
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
##
|
|
364
|
-
# The results of properties detection.
|
|
365
|
-
#
|
|
366
|
-
# @return [Properties, nil]
|
|
367
|
-
#
|
|
368
|
-
# @example
|
|
369
|
-
# require "google/cloud/vision"
|
|
370
|
-
#
|
|
371
|
-
# vision = Google::Cloud::Vision.new
|
|
372
|
-
# image = vision.image "path/to/face.jpg"
|
|
373
|
-
#
|
|
374
|
-
# annotation = vision.annotate image, properties: true
|
|
375
|
-
# properties = annotation.properties
|
|
376
|
-
#
|
|
377
|
-
def properties
|
|
378
|
-
return nil unless @grpc.image_properties_annotation
|
|
379
|
-
@properties ||= Properties.from_grpc(
|
|
380
|
-
@grpc.image_properties_annotation
|
|
381
|
-
)
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
##
|
|
385
|
-
# Whether there is a result for properties detection.
|
|
386
|
-
#
|
|
387
|
-
# @return [Boolean]
|
|
388
|
-
#
|
|
389
|
-
# @example
|
|
390
|
-
# require "google/cloud/vision"
|
|
391
|
-
#
|
|
392
|
-
# vision = Google::Cloud::Vision.new
|
|
393
|
-
# image = vision.image "path/to/face.jpg"
|
|
394
|
-
#
|
|
395
|
-
# annotation = vision.annotate image, properties: true
|
|
396
|
-
# annotation.properties? #=> true
|
|
397
|
-
#
|
|
398
|
-
def properties?
|
|
399
|
-
!properties.nil?
|
|
400
|
-
end
|
|
401
|
-
|
|
402
|
-
##
|
|
403
|
-
# The results of crop hints detection.
|
|
404
|
-
#
|
|
405
|
-
# @return [Array<CropHint>]
|
|
406
|
-
#
|
|
407
|
-
# @example
|
|
408
|
-
# require "google/cloud/vision"
|
|
409
|
-
#
|
|
410
|
-
# vision = Google::Cloud::Vision.new
|
|
411
|
-
# image = vision.image "path/to/face.jpg"
|
|
412
|
-
#
|
|
413
|
-
# annotation = vision.annotate image, crop_hints: true
|
|
414
|
-
# crop_hints = annotation.crop_hints
|
|
415
|
-
#
|
|
416
|
-
def crop_hints
|
|
417
|
-
return [] unless @grpc.crop_hints_annotation
|
|
418
|
-
grpc_crop_hints = @grpc.crop_hints_annotation.crop_hints
|
|
419
|
-
@crop_hints ||= Array(grpc_crop_hints).map do |ch|
|
|
420
|
-
CropHint.from_grpc ch
|
|
421
|
-
end
|
|
422
|
-
end
|
|
423
|
-
|
|
424
|
-
##
|
|
425
|
-
# Whether there is a result for crop hints detection.
|
|
426
|
-
#
|
|
427
|
-
# @return [Boolean]
|
|
428
|
-
#
|
|
429
|
-
# @example
|
|
430
|
-
# require "google/cloud/vision"
|
|
431
|
-
#
|
|
432
|
-
# vision = Google::Cloud::Vision.new
|
|
433
|
-
# image = vision.image "path/to/face.jpg"
|
|
434
|
-
#
|
|
435
|
-
# annotation = vision.annotate image, crop_hints: true
|
|
436
|
-
# annotation.crop_hints? #=> true
|
|
437
|
-
#
|
|
438
|
-
def crop_hints?
|
|
439
|
-
crop_hints.any?
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
##
|
|
443
|
-
# The results of web detection.
|
|
444
|
-
#
|
|
445
|
-
# @return [Web]
|
|
446
|
-
#
|
|
447
|
-
# @example
|
|
448
|
-
# require "google/cloud/vision"
|
|
449
|
-
#
|
|
450
|
-
# vision = Google::Cloud::Vision.new
|
|
451
|
-
# image = vision.image "path/to/face.jpg"
|
|
452
|
-
#
|
|
453
|
-
# annotation = vision.annotate image, web: true
|
|
454
|
-
# web = annotation.web
|
|
455
|
-
#
|
|
456
|
-
def web
|
|
457
|
-
return nil unless @grpc.web_detection
|
|
458
|
-
@web ||= Web.from_grpc(@grpc.web_detection)
|
|
459
|
-
end
|
|
460
|
-
|
|
461
|
-
##
|
|
462
|
-
# Whether there is a result for web detection.
|
|
463
|
-
#
|
|
464
|
-
# @return [Boolean]
|
|
465
|
-
#
|
|
466
|
-
# @example
|
|
467
|
-
# require "google/cloud/vision"
|
|
468
|
-
#
|
|
469
|
-
# vision = Google::Cloud::Vision.new
|
|
470
|
-
# image = vision.image "path/to/face.jpg"
|
|
471
|
-
#
|
|
472
|
-
# annotation = vision.annotate image, web: true
|
|
473
|
-
# annotation.web? #=> true
|
|
474
|
-
#
|
|
475
|
-
def web?
|
|
476
|
-
!web.nil?
|
|
477
|
-
end
|
|
478
|
-
|
|
479
|
-
##
|
|
480
|
-
# The results of object localizations detection.
|
|
481
|
-
#
|
|
482
|
-
# @return [Array<ObjectLocalization>]
|
|
483
|
-
#
|
|
484
|
-
# @example
|
|
485
|
-
# require "google/cloud/vision"
|
|
486
|
-
#
|
|
487
|
-
# vision = Google::Cloud::Vision.new
|
|
488
|
-
# image = vision.image "path/to/face.jpg"
|
|
489
|
-
#
|
|
490
|
-
# annotation = vision.annotate image, object_localizations: true
|
|
491
|
-
# object_localizations = annotation.object_localizations
|
|
492
|
-
#
|
|
493
|
-
def object_localizations
|
|
494
|
-
@ol ||= @grpc.localized_object_annotations.map do |ol|
|
|
495
|
-
ObjectLocalization.from_grpc ol
|
|
496
|
-
end
|
|
497
|
-
end
|
|
498
|
-
|
|
499
|
-
##
|
|
500
|
-
# Whether there is a result for object localizations detection.
|
|
501
|
-
#
|
|
502
|
-
# @return [Boolean]
|
|
503
|
-
#
|
|
504
|
-
# @example
|
|
505
|
-
# require "google/cloud/vision"
|
|
506
|
-
#
|
|
507
|
-
# vision = Google::Cloud::Vision.new
|
|
508
|
-
# image = vision.image "path/to/face.jpg"
|
|
509
|
-
#
|
|
510
|
-
# annotation = vision.annotate image, object_localizations: true
|
|
511
|
-
# annotation.object_localizations? #=> true
|
|
512
|
-
#
|
|
513
|
-
def object_localizations?
|
|
514
|
-
!object_localizations.empty?
|
|
515
|
-
end
|
|
516
|
-
|
|
517
|
-
##
|
|
518
|
-
# Deeply converts object to a hash. All keys will be symbolized.
|
|
519
|
-
#
|
|
520
|
-
# @return [Hash]
|
|
521
|
-
#
|
|
522
|
-
def to_h
|
|
523
|
-
{ faces: faces.map(&:to_h), landmarks: landmarks.map(&:to_h),
|
|
524
|
-
logos: logos.map(&:to_h), labels: labels.map(&:to_h),
|
|
525
|
-
text: text.to_h, safe_search: safe_search.to_h,
|
|
526
|
-
properties: properties.to_h, crop_hints: crop_hints.map(&:to_h),
|
|
527
|
-
web: web.to_h, object_localizations: object_localizations.to_h }
|
|
528
|
-
end
|
|
529
|
-
|
|
530
|
-
# @private
|
|
531
|
-
def to_s
|
|
532
|
-
tmplt = "(faces: %i, landmarks: %i, logos: %i, labels: %i," \
|
|
533
|
-
" text: %s, safe_search: %s, properties: %s," \
|
|
534
|
-
" crop_hints: %s, web: %s, object_localizations: %i)"
|
|
535
|
-
format tmplt, faces.count, landmarks.count, logos.count, labels.count,
|
|
536
|
-
text?, safe_search?, properties?, crop_hints?, web?,
|
|
537
|
-
object_localizations.count
|
|
538
|
-
end
|
|
539
|
-
|
|
540
|
-
# @private
|
|
541
|
-
def inspect
|
|
542
|
-
"#<#{self.class.name} #{self}>"
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
##
|
|
546
|
-
# @private New Annotation from a GRPC object.
|
|
547
|
-
def self.from_grpc grpc
|
|
548
|
-
new.tap { |a| a.instance_variable_set :@grpc, grpc }
|
|
549
|
-
end
|
|
550
|
-
end
|
|
551
|
-
end
|
|
552
|
-
end
|
|
553
|
-
end
|