static VisionAPIRequest BuildPayload(string base64) { Feature webDetect = new Feature { type = "WEB_DETECTION" }; Feature safeDetect = new Feature { type = "SAFE_SEARCH_DETECTION" }; Feature labelDetect = new Feature { type = "LABEL_DETECTION" }; Feature faceDetect = new Feature { type = "FACE_DETECTION" }; Image image = new Image { content = base64 }; Request request = new Request { features = new Feature[] { webDetect, safeDetect, labelDetect, faceDetect }, image = image }; VisionAPIRequest apiRequest = new VisionAPIRequest(); apiRequest.requests = new Request[] { request }; return(apiRequest); }
private List <string> detectObjects(string base64image) { var imageParts = base64image.Split(',').ToList <string>(); VisionAPIRequest visionAPIRequest = new VisionAPIRequest() { requests = new List <requests>() { new requests() { image = new image() { content = imageParts[1] }, features = new List <features>() { new features() { type = FEATURE_TYPE, maxResults = 5 } } } } }; String visionAPIReqStr = JsonConvert.SerializeObject(visionAPIRequest); String apiKey = System.IO.File.ReadAllText("VisionAPIKey.txt"); String domain = "vision.googleapis.com"; String endpoint = "v1/images:annotate"; String visionAPIRespStr = this.callPostAPI(visionAPIReqStr, domain, endpoint, apiKey, "key"); JSchema visionAPISchema = JSchema.Parse(System.IO.File.ReadAllText("VisionAPISchema.json")); JObject visionAPIRespObj = JObject.Parse(visionAPIRespStr); List <string> objects = new List <string>(); IList <string> validationEvents = new List <string>(); if (visionAPIRespObj.IsValid(visionAPISchema, out validationEvents)) { if (!String.IsNullOrEmpty(visionAPIRespStr)) { VisionAPI.Objects objectAnnotationResponse = VisionAPI.Objects.FromJson(visionAPIRespStr); foreach (VisionAPI.Response responses in objectAnnotationResponse.Responses) { foreach (VisionAPI.LocalizedObjectAnnotation localizedObject in responses.LocalizedObjectAnnotations) { if (!objects.Contains(localizedObject.Name)) { objects.Add(localizedObject.Name); } } } } } return(objects); }
static string CallVisionAPI(string url, string base64) { var request = (HttpWebRequest)WebRequest.Create(url); VisionAPIRequest request2 = BuildPayload(base64); byte[] data = Encoding.ASCII.GetBytes(JObject.FromObject(request2).ToString()); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = data.Length; using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } return(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd()); }