ibm_watson 1.0.0.rc3 → 1.0.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/README.md +8 -8
- data/lib/ibm_watson.rb +2 -9
- data/lib/ibm_watson/assistant_v1.rb +5 -2
- data/lib/ibm_watson/assistant_v2.rb +3 -0
- data/lib/ibm_watson/authenticators.rb +15 -0
- data/lib/ibm_watson/discovery_v1.rb +79 -15
- data/lib/ibm_watson/speech_to_text_v1.rb +3 -2
- data/lib/ibm_watson/text_to_speech_v1.rb +29 -50
- data/lib/ibm_watson/tone_analyzer_v3.rb +2 -1
- data/lib/ibm_watson/version.rb +1 -1
- data/lib/ibm_watson/visual_recognition_v4.rb +658 -0
- data/test/integration/test_discovery_v1.rb +1 -1
- data/test/integration/test_speech_to_text_v1.rb +1 -1
- data/test/integration/test_tone_analyzer_v3.rb +4 -4
- data/test/integration/test_visual_recognition_v4.rb +78 -0
- data/test/unit/test_discovery_v1.rb +25 -0
- data/test/unit/test_visual_recognition_v4.rb +412 -0
- metadata +13 -10
@@ -134,11 +134,12 @@ module IBMWatson
|
|
134
134
|
}
|
135
135
|
sdk_headers = Common.new.get_sdk_headers("tone_analyzer", "V3", "tone")
|
136
136
|
headers.merge!(sdk_headers)
|
137
|
+
tones *= "," unless tones.nil?
|
137
138
|
|
138
139
|
params = {
|
139
140
|
"version" => @version,
|
140
141
|
"sentences" => sentences,
|
141
|
-
"tones" => tones
|
142
|
+
"tones" => tones
|
142
143
|
}
|
143
144
|
|
144
145
|
if content_type.start_with?("application/json") && tone_input.instance_of?(Hash)
|
data/lib/ibm_watson/version.rb
CHANGED
@@ -0,0 +1,658 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# (C) Copyright IBM Corp. 2019.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# Provide images to the IBM Watson™ Visual Recognition service for analysis. The
|
18
|
+
# service detects objects based on a set of images with training data.
|
19
|
+
#
|
20
|
+
# **Beta:** The Visual Recognition v4 API and Object Detection model are beta features.
|
21
|
+
# For more information about beta features, see the [Release
|
22
|
+
# notes](https://cloud.ibm.com/docs/services/visual-recognition?topic=visual-recognition-release-notes#beta).
|
23
|
+
# {: important}
|
24
|
+
|
25
|
+
require "concurrent"
|
26
|
+
require "erb"
|
27
|
+
require "json"
|
28
|
+
require "ibm_cloud_sdk_core"
|
29
|
+
require_relative "./common.rb"
|
30
|
+
|
31
|
+
# Module for the Watson APIs
|
32
|
+
module IBMWatson
|
33
|
+
##
|
34
|
+
# The Visual Recognition V4 service.
|
35
|
+
class VisualRecognitionV4 < IBMCloudSdkCore::BaseService
|
36
|
+
include Concurrent::Async
|
37
|
+
##
|
38
|
+
# @!method initialize(args)
|
39
|
+
# Construct a new client for the Visual Recognition service.
|
40
|
+
#
|
41
|
+
# @param args [Hash] The args to initialize with
|
42
|
+
# @option args version [String] The API version date to use with the service, in
|
43
|
+
# "YYYY-MM-DD" format. Whenever the API is changed in a backwards
|
44
|
+
# incompatible way, a new minor version of the API is released.
|
45
|
+
# The service uses the API version for the date you specify, or
|
46
|
+
# the most recent version before that date. Note that you should
|
47
|
+
# not programmatically specify the current date at runtime, in
|
48
|
+
# case the API has been updated since your application's release.
|
49
|
+
# Instead, specify a version date that is compatible with your
|
50
|
+
# application, and don't change it until your application is
|
51
|
+
# ready for a later version.
|
52
|
+
# @option args service_url [String] The base service URL to use when contacting the service.
|
53
|
+
# The base service_url may differ between IBM Cloud regions.
|
54
|
+
# @option args authenticator [Object] The Authenticator instance to be configured for this service.
|
55
|
+
def initialize(args = {})
|
56
|
+
@__async_initialized__ = false
|
57
|
+
defaults = {}
|
58
|
+
defaults[:version] = nil
|
59
|
+
defaults[:service_url] = "https://gateway.watsonplatform.net/visual-recognition/api"
|
60
|
+
defaults[:authenticator] = nil
|
61
|
+
args = defaults.merge(args)
|
62
|
+
@version = args[:version]
|
63
|
+
raise ArgumentError.new("version must be provided") if @version.nil?
|
64
|
+
|
65
|
+
args[:service_name] = "visual_recognition"
|
66
|
+
args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
|
67
|
+
super
|
68
|
+
end
|
69
|
+
|
70
|
+
#########################
|
71
|
+
# Analysis
|
72
|
+
#########################
|
73
|
+
|
74
|
+
##
|
75
|
+
# @!method analyze(collection_ids:, features:, images_file: nil, image_url: nil, threshold: nil)
|
76
|
+
# Analyze images.
|
77
|
+
# Analyze images by URL, by file, or both against your own collection. Make sure
|
78
|
+
# that **training_status.objects.ready** is `true` for the feature before you use a
|
79
|
+
# collection to analyze images.
|
80
|
+
#
|
81
|
+
# Encode the image and .zip file names in UTF-8 if they contain non-ASCII
|
82
|
+
# characters. The service assumes UTF-8 encoding if it encounters non-ASCII
|
83
|
+
# characters.
|
84
|
+
# @param collection_ids [Array[String]] The IDs of the collections to analyze.
|
85
|
+
# @param features [Array[String]] The features to analyze.
|
86
|
+
# @param images_file [Array[FileWithMetadata]] An array of image files (.jpg or .png) or .zip files with images.
|
87
|
+
# - Include a maximum of 20 images in a request.
|
88
|
+
# - Limit the .zip file to 100 MB.
|
89
|
+
# - Limit each image file to 10 MB.
|
90
|
+
#
|
91
|
+
# You can also include an image with the **image_url** parameter.
|
92
|
+
# @param image_url [Array[String]] An array of URLs of image files (.jpg or .png).
|
93
|
+
# - Include a maximum of 20 images in a request.
|
94
|
+
# - Limit each image file to 10 MB.
|
95
|
+
# - Minimum width and height is 30 pixels, but the service tends to perform better
|
96
|
+
# with images that are at least 300 x 300 pixels. Maximum is 5400 pixels for either
|
97
|
+
# height or width.
|
98
|
+
#
|
99
|
+
# You can also include images with the **images_file** parameter.
|
100
|
+
# @param threshold [Float] The minimum score a feature must have to be returned.
|
101
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
102
|
+
def analyze(collection_ids:, features:, images_file: nil, image_url: nil, threshold: nil)
|
103
|
+
raise ArgumentError.new("collection_ids must be provided") if collection_ids.nil?
|
104
|
+
|
105
|
+
raise ArgumentError.new("features must be provided") if features.nil?
|
106
|
+
|
107
|
+
headers = {
|
108
|
+
}
|
109
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "analyze")
|
110
|
+
headers.merge!(sdk_headers)
|
111
|
+
|
112
|
+
params = {
|
113
|
+
"version" => @version
|
114
|
+
}
|
115
|
+
|
116
|
+
form_data = {}
|
117
|
+
|
118
|
+
collection_ids *= "," unless collection_ids.nil?
|
119
|
+
features *= "," unless features.nil?
|
120
|
+
|
121
|
+
form_data[:collection_ids] = HTTP::FormData::Part.new(collection_ids.to_s, content_type: "text/plain")
|
122
|
+
|
123
|
+
form_data[:features] = HTTP::FormData::Part.new(features.to_s, content_type: "text/plain")
|
124
|
+
|
125
|
+
form_data[:images_file] = []
|
126
|
+
images_file&.each do |item|
|
127
|
+
unless item[:data].instance_of?(StringIO) || item[:data].instance_of?(File)
|
128
|
+
item[:data] = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data])
|
129
|
+
end
|
130
|
+
item[:filename] = item[:data].path if item[:filename].nil? && item[:data].respond_to?(:path)
|
131
|
+
form_data[:images_file].push(HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename]))
|
132
|
+
end
|
133
|
+
|
134
|
+
form_data[:image_url] = []
|
135
|
+
image_url&.each do |item|
|
136
|
+
form_data[:image_url].push(HTTP::FormData::Part.new(item.to_s, content_type: "text/plain"))
|
137
|
+
end
|
138
|
+
|
139
|
+
form_data[:threshold] = HTTP::FormData::Part.new(threshold.to_s, content_type: "application/json") unless threshold.nil?
|
140
|
+
|
141
|
+
method_url = "/v4/analyze"
|
142
|
+
|
143
|
+
response = request(
|
144
|
+
method: "POST",
|
145
|
+
url: method_url,
|
146
|
+
headers: headers,
|
147
|
+
params: params,
|
148
|
+
form: form_data,
|
149
|
+
accept_json: true
|
150
|
+
)
|
151
|
+
response
|
152
|
+
end
|
153
|
+
#########################
|
154
|
+
# Collections
|
155
|
+
#########################
|
156
|
+
|
157
|
+
##
|
158
|
+
# @!method create_collection(name: nil, description: nil)
|
159
|
+
# Create a collection.
|
160
|
+
# Create a collection that can be used to store images.
|
161
|
+
#
|
162
|
+
# To create a collection without specifying a name and description, include an empty
|
163
|
+
# JSON object in the request body.
|
164
|
+
#
|
165
|
+
# Encode the name and description in UTF-8 if they contain non-ASCII characters. The
|
166
|
+
# service assumes UTF-8 encoding if it encounters non-ASCII characters.
|
167
|
+
# @param name [String] The name of the collection. The name can contain alphanumeric, underscore, hyphen,
|
168
|
+
# and dot characters. It cannot begin with the reserved prefix `sys-`.
|
169
|
+
# @param description [String] The description of the collection.
|
170
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
171
|
+
def create_collection(name: nil, description: nil)
|
172
|
+
headers = {
|
173
|
+
}
|
174
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "create_collection")
|
175
|
+
headers.merge!(sdk_headers)
|
176
|
+
|
177
|
+
params = {
|
178
|
+
"version" => @version
|
179
|
+
}
|
180
|
+
|
181
|
+
data = {
|
182
|
+
"name" => name,
|
183
|
+
"description" => description
|
184
|
+
}
|
185
|
+
|
186
|
+
method_url = "/v4/collections"
|
187
|
+
|
188
|
+
response = request(
|
189
|
+
method: "POST",
|
190
|
+
url: method_url,
|
191
|
+
headers: headers,
|
192
|
+
params: params,
|
193
|
+
json: data,
|
194
|
+
accept_json: true
|
195
|
+
)
|
196
|
+
response
|
197
|
+
end
|
198
|
+
|
199
|
+
##
|
200
|
+
# @!method list_collections
|
201
|
+
# List collections.
|
202
|
+
# Retrieves a list of collections for the service instance.
|
203
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
204
|
+
def list_collections
|
205
|
+
headers = {
|
206
|
+
}
|
207
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "list_collections")
|
208
|
+
headers.merge!(sdk_headers)
|
209
|
+
|
210
|
+
params = {
|
211
|
+
"version" => @version
|
212
|
+
}
|
213
|
+
|
214
|
+
method_url = "/v4/collections"
|
215
|
+
|
216
|
+
response = request(
|
217
|
+
method: "GET",
|
218
|
+
url: method_url,
|
219
|
+
headers: headers,
|
220
|
+
params: params,
|
221
|
+
accept_json: true
|
222
|
+
)
|
223
|
+
response
|
224
|
+
end
|
225
|
+
|
226
|
+
##
|
227
|
+
# @!method get_collection(collection_id:)
|
228
|
+
# Get collection details.
|
229
|
+
# Get details of one collection.
|
230
|
+
# @param collection_id [String] The identifier of the collection.
|
231
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
232
|
+
def get_collection(collection_id:)
|
233
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
234
|
+
|
235
|
+
headers = {
|
236
|
+
}
|
237
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "get_collection")
|
238
|
+
headers.merge!(sdk_headers)
|
239
|
+
|
240
|
+
params = {
|
241
|
+
"version" => @version
|
242
|
+
}
|
243
|
+
|
244
|
+
method_url = "/v4/collections/%s" % [ERB::Util.url_encode(collection_id)]
|
245
|
+
|
246
|
+
response = request(
|
247
|
+
method: "GET",
|
248
|
+
url: method_url,
|
249
|
+
headers: headers,
|
250
|
+
params: params,
|
251
|
+
accept_json: true
|
252
|
+
)
|
253
|
+
response
|
254
|
+
end
|
255
|
+
|
256
|
+
##
|
257
|
+
# @!method update_collection(collection_id:, name: nil, description: nil)
|
258
|
+
# Update a collection.
|
259
|
+
# Update the name or description of a collection.
|
260
|
+
#
|
261
|
+
# Encode the name and description in UTF-8 if they contain non-ASCII characters. The
|
262
|
+
# service assumes UTF-8 encoding if it encounters non-ASCII characters.
|
263
|
+
# @param collection_id [String] The identifier of the collection.
|
264
|
+
# @param name [String] The name of the collection. The name can contain alphanumeric, underscore, hyphen,
|
265
|
+
# and dot characters. It cannot begin with the reserved prefix `sys-`.
|
266
|
+
# @param description [String] The description of the collection.
|
267
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
268
|
+
def update_collection(collection_id:, name: nil, description: nil)
|
269
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
270
|
+
|
271
|
+
headers = {
|
272
|
+
}
|
273
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "update_collection")
|
274
|
+
headers.merge!(sdk_headers)
|
275
|
+
|
276
|
+
params = {
|
277
|
+
"version" => @version
|
278
|
+
}
|
279
|
+
|
280
|
+
data = {
|
281
|
+
"name" => name,
|
282
|
+
"description" => description
|
283
|
+
}
|
284
|
+
|
285
|
+
method_url = "/v4/collections/%s" % [ERB::Util.url_encode(collection_id)]
|
286
|
+
|
287
|
+
response = request(
|
288
|
+
method: "POST",
|
289
|
+
url: method_url,
|
290
|
+
headers: headers,
|
291
|
+
params: params,
|
292
|
+
json: data,
|
293
|
+
accept_json: true
|
294
|
+
)
|
295
|
+
response
|
296
|
+
end
|
297
|
+
|
298
|
+
##
|
299
|
+
# @!method delete_collection(collection_id:)
|
300
|
+
# Delete a collection.
|
301
|
+
# Delete a collection from the service instance.
|
302
|
+
# @param collection_id [String] The identifier of the collection.
|
303
|
+
# @return [nil]
|
304
|
+
def delete_collection(collection_id:)
|
305
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
306
|
+
|
307
|
+
headers = {
|
308
|
+
}
|
309
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "delete_collection")
|
310
|
+
headers.merge!(sdk_headers)
|
311
|
+
|
312
|
+
params = {
|
313
|
+
"version" => @version
|
314
|
+
}
|
315
|
+
|
316
|
+
method_url = "/v4/collections/%s" % [ERB::Util.url_encode(collection_id)]
|
317
|
+
|
318
|
+
request(
|
319
|
+
method: "DELETE",
|
320
|
+
url: method_url,
|
321
|
+
headers: headers,
|
322
|
+
params: params,
|
323
|
+
accept_json: true
|
324
|
+
)
|
325
|
+
nil
|
326
|
+
end
|
327
|
+
#########################
|
328
|
+
# Images
|
329
|
+
#########################
|
330
|
+
|
331
|
+
##
|
332
|
+
# @!method add_images(collection_id:, images_file: nil, image_url: nil, training_data: nil)
|
333
|
+
# Add images.
|
334
|
+
# Add images to a collection by URL, by file, or both.
|
335
|
+
#
|
336
|
+
# Encode the image and .zip file names in UTF-8 if they contain non-ASCII
|
337
|
+
# characters. The service assumes UTF-8 encoding if it encounters non-ASCII
|
338
|
+
# characters.
|
339
|
+
# @param collection_id [String] The identifier of the collection.
|
340
|
+
# @param images_file [Array[FileWithMetadata]] An array of image files (.jpg or .png) or .zip files with images.
|
341
|
+
# - Include a maximum of 20 images in a request.
|
342
|
+
# - Limit the .zip file to 100 MB.
|
343
|
+
# - Limit each image file to 10 MB.
|
344
|
+
#
|
345
|
+
# You can also include an image with the **image_url** parameter.
|
346
|
+
# @param image_url [Array[String]] The array of URLs of image files (.jpg or .png).
|
347
|
+
# - Include a maximum of 20 images in a request.
|
348
|
+
# - Limit each image file to 10 MB.
|
349
|
+
# - Minimum width and height is 30 pixels, but the service tends to perform better
|
350
|
+
# with images that are at least 300 x 300 pixels. Maximum is 5400 pixels for either
|
351
|
+
# height or width.
|
352
|
+
#
|
353
|
+
# You can also include images with the **images_file** parameter.
|
354
|
+
# @param training_data [String] Training data for a single image. Include training data only if you add one image
|
355
|
+
# with the request.
|
356
|
+
#
|
357
|
+
# The `object` property can contain alphanumeric, underscore, hyphen, space, and dot
|
358
|
+
# characters. It cannot begin with the reserved prefix `sys-` and must be no longer
|
359
|
+
# than 32 characters.
|
360
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
361
|
+
def add_images(collection_id:, images_file: nil, image_url: nil, training_data: nil)
|
362
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
363
|
+
|
364
|
+
headers = {
|
365
|
+
}
|
366
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "add_images")
|
367
|
+
headers.merge!(sdk_headers)
|
368
|
+
|
369
|
+
params = {
|
370
|
+
"version" => @version
|
371
|
+
}
|
372
|
+
|
373
|
+
form_data = {}
|
374
|
+
|
375
|
+
form_data[:images_file] = []
|
376
|
+
images_file&.each do |item|
|
377
|
+
unless item[:data].instance_of?(StringIO) || item[:data].instance_of?(File)
|
378
|
+
item[:data] = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data])
|
379
|
+
end
|
380
|
+
item[:filename] = item[:data].path if item[:filename].nil? && item[:data].respond_to?(:path)
|
381
|
+
form_data[:images_file].push(HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename]))
|
382
|
+
end
|
383
|
+
|
384
|
+
form_data[:image_url] = []
|
385
|
+
image_url&.each do |item|
|
386
|
+
form_data[:image_url].push(HTTP::FormData::Part.new(item.to_s, content_type: "text/plain"))
|
387
|
+
end
|
388
|
+
|
389
|
+
form_data[:training_data] = HTTP::FormData::Part.new(training_data.to_s, content_type: "text/plain") unless training_data.nil?
|
390
|
+
|
391
|
+
method_url = "/v4/collections/%s/images" % [ERB::Util.url_encode(collection_id)]
|
392
|
+
|
393
|
+
response = request(
|
394
|
+
method: "POST",
|
395
|
+
url: method_url,
|
396
|
+
headers: headers,
|
397
|
+
params: params,
|
398
|
+
form: form_data,
|
399
|
+
accept_json: true
|
400
|
+
)
|
401
|
+
response
|
402
|
+
end
|
403
|
+
|
404
|
+
##
|
405
|
+
# @!method list_images(collection_id:)
|
406
|
+
# List images.
|
407
|
+
# Retrieves a list of images in a collection.
|
408
|
+
# @param collection_id [String] The identifier of the collection.
|
409
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
410
|
+
def list_images(collection_id:)
|
411
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
412
|
+
|
413
|
+
headers = {
|
414
|
+
}
|
415
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "list_images")
|
416
|
+
headers.merge!(sdk_headers)
|
417
|
+
|
418
|
+
params = {
|
419
|
+
"version" => @version
|
420
|
+
}
|
421
|
+
|
422
|
+
method_url = "/v4/collections/%s/images" % [ERB::Util.url_encode(collection_id)]
|
423
|
+
|
424
|
+
response = request(
|
425
|
+
method: "GET",
|
426
|
+
url: method_url,
|
427
|
+
headers: headers,
|
428
|
+
params: params,
|
429
|
+
accept_json: true
|
430
|
+
)
|
431
|
+
response
|
432
|
+
end
|
433
|
+
|
434
|
+
##
|
435
|
+
# @!method get_image_details(collection_id:, image_id:)
|
436
|
+
# Get image details.
|
437
|
+
# Get the details of an image in a collection.
|
438
|
+
# @param collection_id [String] The identifier of the collection.
|
439
|
+
# @param image_id [String] The identifier of the image.
|
440
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
441
|
+
def get_image_details(collection_id:, image_id:)
|
442
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
443
|
+
|
444
|
+
raise ArgumentError.new("image_id must be provided") if image_id.nil?
|
445
|
+
|
446
|
+
headers = {
|
447
|
+
}
|
448
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "get_image_details")
|
449
|
+
headers.merge!(sdk_headers)
|
450
|
+
|
451
|
+
params = {
|
452
|
+
"version" => @version
|
453
|
+
}
|
454
|
+
|
455
|
+
method_url = "/v4/collections/%s/images/%s" % [ERB::Util.url_encode(collection_id), ERB::Util.url_encode(image_id)]
|
456
|
+
|
457
|
+
response = request(
|
458
|
+
method: "GET",
|
459
|
+
url: method_url,
|
460
|
+
headers: headers,
|
461
|
+
params: params,
|
462
|
+
accept_json: true
|
463
|
+
)
|
464
|
+
response
|
465
|
+
end
|
466
|
+
|
467
|
+
##
|
468
|
+
# @!method delete_image(collection_id:, image_id:)
|
469
|
+
# Delete an image.
|
470
|
+
# Delete one image from a collection.
|
471
|
+
# @param collection_id [String] The identifier of the collection.
|
472
|
+
# @param image_id [String] The identifier of the image.
|
473
|
+
# @return [nil]
|
474
|
+
def delete_image(collection_id:, image_id:)
|
475
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
476
|
+
|
477
|
+
raise ArgumentError.new("image_id must be provided") if image_id.nil?
|
478
|
+
|
479
|
+
headers = {
|
480
|
+
}
|
481
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "delete_image")
|
482
|
+
headers.merge!(sdk_headers)
|
483
|
+
|
484
|
+
params = {
|
485
|
+
"version" => @version
|
486
|
+
}
|
487
|
+
|
488
|
+
method_url = "/v4/collections/%s/images/%s" % [ERB::Util.url_encode(collection_id), ERB::Util.url_encode(image_id)]
|
489
|
+
|
490
|
+
request(
|
491
|
+
method: "DELETE",
|
492
|
+
url: method_url,
|
493
|
+
headers: headers,
|
494
|
+
params: params,
|
495
|
+
accept_json: true
|
496
|
+
)
|
497
|
+
nil
|
498
|
+
end
|
499
|
+
|
500
|
+
##
|
501
|
+
# @!method get_jpeg_image(collection_id:, image_id:, size: nil)
|
502
|
+
# Get a JPEG file of an image.
|
503
|
+
# Download a JPEG representation of an image.
|
504
|
+
# @param collection_id [String] The identifier of the collection.
|
505
|
+
# @param image_id [String] The identifier of the image.
|
506
|
+
# @param size [String] Specify the image size.
|
507
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
508
|
+
def get_jpeg_image(collection_id:, image_id:, size: nil)
|
509
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
510
|
+
|
511
|
+
raise ArgumentError.new("image_id must be provided") if image_id.nil?
|
512
|
+
|
513
|
+
headers = {
|
514
|
+
}
|
515
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "get_jpeg_image")
|
516
|
+
headers.merge!(sdk_headers)
|
517
|
+
|
518
|
+
params = {
|
519
|
+
"version" => @version,
|
520
|
+
"size" => size
|
521
|
+
}
|
522
|
+
|
523
|
+
method_url = "/v4/collections/%s/images/%s/jpeg" % [ERB::Util.url_encode(collection_id), ERB::Util.url_encode(image_id)]
|
524
|
+
|
525
|
+
response = request(
|
526
|
+
method: "GET",
|
527
|
+
url: method_url,
|
528
|
+
headers: headers,
|
529
|
+
params: params,
|
530
|
+
accept_json: false
|
531
|
+
)
|
532
|
+
response
|
533
|
+
end
|
534
|
+
#########################
|
535
|
+
# Training
|
536
|
+
#########################
|
537
|
+
|
538
|
+
##
|
539
|
+
# @!method train(collection_id:)
|
540
|
+
# Train a collection.
|
541
|
+
# Start training on images in a collection. The collection must have enough training
|
542
|
+
# data and untrained data (the **training_status.objects.data_changed** is `true`).
|
543
|
+
# If training is in progress, the request queues the next training job.
|
544
|
+
# @param collection_id [String] The identifier of the collection.
|
545
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
546
|
+
def train(collection_id:)
|
547
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
548
|
+
|
549
|
+
headers = {
|
550
|
+
}
|
551
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "train")
|
552
|
+
headers.merge!(sdk_headers)
|
553
|
+
|
554
|
+
params = {
|
555
|
+
"version" => @version
|
556
|
+
}
|
557
|
+
|
558
|
+
method_url = "/v4/collections/%s/train" % [ERB::Util.url_encode(collection_id)]
|
559
|
+
|
560
|
+
response = request(
|
561
|
+
method: "POST",
|
562
|
+
url: method_url,
|
563
|
+
headers: headers,
|
564
|
+
params: params,
|
565
|
+
accept_json: true
|
566
|
+
)
|
567
|
+
response
|
568
|
+
end
|
569
|
+
|
570
|
+
##
|
571
|
+
# @!method add_image_training_data(collection_id:, image_id:, objects: nil)
|
572
|
+
# Add training data to an image.
|
573
|
+
# Add, update, or delete training data for an image. Encode the object name in UTF-8
|
574
|
+
# if it contains non-ASCII characters. The service assumes UTF-8 encoding if it
|
575
|
+
# encounters non-ASCII characters.
|
576
|
+
#
|
577
|
+
# Elements in the request replace the existing elements.
|
578
|
+
#
|
579
|
+
# - To update the training data, provide both the unchanged and the new or changed
|
580
|
+
# values.
|
581
|
+
#
|
582
|
+
# - To delete the training data, provide an empty value for the training data.
|
583
|
+
# @param collection_id [String] The identifier of the collection.
|
584
|
+
# @param image_id [String] The identifier of the image.
|
585
|
+
# @param objects [Array[TrainingDataObject]] Training data for specific objects.
|
586
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
587
|
+
def add_image_training_data(collection_id:, image_id:, objects: nil)
|
588
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
589
|
+
|
590
|
+
raise ArgumentError.new("image_id must be provided") if image_id.nil?
|
591
|
+
|
592
|
+
headers = {
|
593
|
+
}
|
594
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "add_image_training_data")
|
595
|
+
headers.merge!(sdk_headers)
|
596
|
+
|
597
|
+
params = {
|
598
|
+
"version" => @version
|
599
|
+
}
|
600
|
+
|
601
|
+
data = {
|
602
|
+
"objects" => objects
|
603
|
+
}
|
604
|
+
|
605
|
+
method_url = "/v4/collections/%s/images/%s/training_data" % [ERB::Util.url_encode(collection_id), ERB::Util.url_encode(image_id)]
|
606
|
+
|
607
|
+
response = request(
|
608
|
+
method: "POST",
|
609
|
+
url: method_url,
|
610
|
+
headers: headers,
|
611
|
+
params: params,
|
612
|
+
json: data,
|
613
|
+
accept_json: true
|
614
|
+
)
|
615
|
+
response
|
616
|
+
end
|
617
|
+
#########################
|
618
|
+
# User data
|
619
|
+
#########################
|
620
|
+
|
621
|
+
##
|
622
|
+
# @!method delete_user_data(customer_id:)
|
623
|
+
# Delete labeled data.
|
624
|
+
# Deletes all data associated with a specified customer ID. The method has no effect
|
625
|
+
# if no data is associated with the customer ID.
|
626
|
+
#
|
627
|
+
# You associate a customer ID with data by passing the `X-Watson-Metadata` header
|
628
|
+
# with a request that passes data. For more information about personal data and
|
629
|
+
# customer IDs, see [Information
|
630
|
+
# security](https://cloud.ibm.com/docs/services/visual-recognition?topic=visual-recognition-information-security).
|
631
|
+
# @param customer_id [String] The customer ID for which all data is to be deleted.
|
632
|
+
# @return [nil]
|
633
|
+
def delete_user_data(customer_id:)
|
634
|
+
raise ArgumentError.new("customer_id must be provided") if customer_id.nil?
|
635
|
+
|
636
|
+
headers = {
|
637
|
+
}
|
638
|
+
sdk_headers = Common.new.get_sdk_headers("watson_vision_combined", "V4", "delete_user_data")
|
639
|
+
headers.merge!(sdk_headers)
|
640
|
+
|
641
|
+
params = {
|
642
|
+
"version" => @version,
|
643
|
+
"customer_id" => customer_id
|
644
|
+
}
|
645
|
+
|
646
|
+
method_url = "/v4/user_data"
|
647
|
+
|
648
|
+
request(
|
649
|
+
method: "DELETE",
|
650
|
+
url: method_url,
|
651
|
+
headers: headers,
|
652
|
+
params: params,
|
653
|
+
accept_json: true
|
654
|
+
)
|
655
|
+
nil
|
656
|
+
end
|
657
|
+
end
|
658
|
+
end
|