-
Notifications
You must be signed in to change notification settings - Fork 150
/
IVisionServiceClient.cs
207 lines (185 loc) · 9.62 KB
/
IVisionServiceClient.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license.
//
// Microsoft Cognitive Services (formerly Project Oxford): https://www.microsoft.com/cognitive-services
//
// Microsoft Cognitive Services (formerly Project Oxford) GitHub:
// https://github.com/Microsoft/Cognitive-Vision-Windows
//
// Copyright (c) Microsoft Corporation
// All rights reserved.
//
// MIT License:
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System.IO;
using System.Threading.Tasks;
using Microsoft.ProjectOxford.Vision.Contract;
using System.Collections.Generic;
using System;
namespace Microsoft.ProjectOxford.Vision
{
/// <summary>
/// Vision service client interfaces.
/// </summary>
public interface IVisionServiceClient
{
/// <summary>
/// Analyzes the image.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="visualFeatures">The visual features. If none are specified, 'Categories' will be analyzed.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisResult> AnalyzeImageAsync(string url, string[] visualFeatures = null);
/// <summary>
/// Analyzes the image.
/// </summary>
/// <param name="imageStream">The image stream.</param>
/// <param name="visualFeatures">The visual features. If none are specified, 'Categories' will be analyzed.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisResult> AnalyzeImageAsync(Stream imageStream, string[] visualFeatures = null);
/// <summary>
/// Analyzes the image.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="visualFeatures">The visual features. If none are specified, VisualFeatures.Categories will be analyzed.</param>
/// <param name="details">Optional domain-specific models to invoke when appropriate. To obtain names of models supported, invoke the <see cref="ListModelsAsync">ListModelsAsync</see> method.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisResult> AnalyzeImageAsync(string url, IEnumerable<VisualFeature> visualFeatures = null, IEnumerable<string> details = null);
/// <summary>
/// Analyzes the image.
/// </summary>
/// <param name="imageStream">The image stream.</param>
/// <param name="visualFeatures">The visual features. If none are specified, VisualFeatures.Categories will be analyzed.</param>
/// <param name="details">Optional domain-specific models to invoke when appropriate. To obtain names of models supported, invoke the <see cref="ListModelsAsync">ListModelsAsync</see> method.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisResult> AnalyzeImageAsync(Stream imageStream, IEnumerable<VisualFeature> visualFeatures = null, IEnumerable<string> details = null);
/// <summary>
/// Analyzes the image using a domain-specific image analysis model.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="model">Model representing the domain.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisInDomainResult> AnalyzeImageInDomainAsync(string url, Model model);
/// <summary>
/// Analyzes the image using a domain-specific image analysis model.
/// </summary>
/// <param name="stream">The image stream.</param>
/// <param name="visualFeatures">The visual features.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisInDomainResult> AnalyzeImageInDomainAsync(Stream imageStream, Model model);
/// <summary>
/// Analyzes the image using a domain-specific image analysis model.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="modelName">Name of the model.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisInDomainResult> AnalyzeImageInDomainAsync(string url, string modelName);
/// <summary>
/// Analyzes the image using a domain-specific image analysis model.
/// </summary>
/// <param name="stream">The image stream.</param>
/// <param name="modelName">Name of the model.</param>
/// <returns>The AnalysisResult object.</returns>
Task<AnalysisInDomainResult> AnalyzeImageInDomainAsync(Stream imageStream, string modelName);
/// <summary>
/// List domain-specific models currently supproted.
/// </summary>
/// <returns></returns>
Task<ModelResult> ListModelsAsync();
/// <summary>
/// List domain-specific models currently supproted.
/// </summary>
/// <returns></returns>
Task<AnalysisResult> DescribeAsync(string url, int maxCandidates = 1);
/// <summary>
/// List domain-specific models currently supproted.
/// </summary>
/// <returns></returns>
Task<AnalysisResult> DescribeAsync(Stream imageStream, int maxCandidates = 1);
/// <summary>
/// Gets the thumbnail.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
/// <param name="smartCropping">if set to <c>true</c> [smart cropping].</param>
/// <returns>The byte array.</returns>
Task<byte[]> GetThumbnailAsync(string url, int width, int height, bool smartCropping = true);
/// <summary>
/// Gets the thumbnail.
/// </summary>
/// <param name="stream">The stream.</param>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
/// <param name="smartCropping">if set to <c>true</c> [smart cropping].</param>
/// <returns>The byte array.</returns>
Task<byte[]> GetThumbnailAsync(Stream stream, int width, int height, bool smartCropping = true);
/// <summary>
/// Recognizes the text.
/// </summary>
/// <param name="imageUrl">The image URL.</param>
/// <param name="languageCode">The language code.</param>
/// <param name="detectOrientation">if set to <c>true</c> [detect orientation].</param>
/// <returns>The OCR object.</returns>
Task<OcrResults> RecognizeTextAsync(string imageUrl, string languageCode = LanguageCodes.AutoDetect, bool detectOrientation = true);
/// <summary>
/// Recognizes the text.
/// </summary>
/// <param name="imageStream">The image stream.</param>
/// <param name="languageCode">The language code.</param>
/// <param name="detectOrientation">if set to <c>true</c> [detect orientation].</param>
/// <returns>The OCR object.</returns>
Task<OcrResults> RecognizeTextAsync(Stream imageStream, string languageCode = LanguageCodes.AutoDetect, bool detectOrientation = true);
/// <summary>
/// TextRecognitionOperation
/// </summary>
/// <param name="imageUrl">Image url</param>
/// <param name="mode">The recognition mode.</param>
/// <returns>TextRecognitionOperation created</returns>
Task<TextRecognitionOperation> CreateTextRecognitionOperationAsync(string imageUrl, TextRecognitionMode mode);
/// <summary>
/// Create TextRecognitionOperation
/// </summary>
/// <param name="imageStream">Image content is byte array.</param>
/// <param name="mode">The recognition mode.</param>
/// <returns>TextRecognitionOperation created</returns>
Task<TextRecognitionOperation> CreateTextRecognitionOperationAsync(Stream imageStream, TextRecognitionMode mode);
/// <summary>
/// Get TextRecognitionOperationResult
/// </summary>
/// <param name="opeartion">TextRecognitionOperation object</param>
/// <returns>TextRecognitionOperationResult</returns>
Task<TextRecognitionOperationResult> GetTextRecognitionOperationResultAsync(TextRecognitionOperation opeartion);
/// <summary>
/// Gets the tags associated with an image.
/// </summary>
/// <param name="imageUrl">The image URL.</param>
/// <returns>Analysis result with tags.</returns>
Task<AnalysisResult> GetTagsAsync(string imageUrl);
/// <summary>
/// Gets the tags associated with an image.
/// </summary>
/// <param name="imageStream">The image stream.</param>
/// <returns>Analysis result with tags.</returns>
Task<AnalysisResult> GetTagsAsync(Stream imageStream);
}
}