/// <summary> /// Detects all markers in the buffer. /// </summary> /// <param name="buffer">The buffer which should be searched for markers.</param> /// <returns>The results of the detection.</returns> protected DetectionResults DetectAllMarkers(INyARRgbRaster buffer) { // Filter buffer if (!isAdaptive) { ((NyARRasterFilter_ARToolkitThreshold)this.bufferFilter).setThreshold(this.Threshold); } this.bufferFilter.doFilter(buffer, this.filteredBuffer); // Detect and return results this.squareDetectionListener.Reset(); this.squareDetectionListener.Buffer = buffer; this.squareDetector.detectMarkerCB(this.filteredBuffer, squareDetectionListener); var results = this.squareDetectionListener.Results; // Prevent jittering if (previousResults != null && JitteringThreshold != 0) { var jitThresholdSq = JitteringThreshold * JitteringThreshold; var newResults = new DetectionResults(); foreach (var result in results) { var previousResult = previousResults.FirstOrDefault(r => r.Marker == result.Marker); if (previousResult == null) { newResults.Add(result); } else { var pcenter = previousResult.Square.Center; var center = result.Square.Center; var dx = pcenter.X - center.X; var dy = pcenter.X - center.X; var lenSq = dx * dx + dy * dy; newResults.Add(lenSq > jitThresholdSq ? result : previousResult); } } previousResults = newResults; return newResults; } previousResults = results; return results; }
public void OnPost(List <IFormFile> files, string imageUrl) { long size = 0; this.ViewData["error"] = -1; if (files != null && files.Count > 0) { // 上传图片的模式 var file = files[0]; var stream = file.OpenReadStream(); size = stream.Length; var bytes = new byte[size]; stream.Read(bytes, 0, (int)size); if (bytes.Length > 0) { bytes = ReSizeImageFile(bytes); var baiduApi = new BaiduAI.ImageAI(); var baiduRet = baiduApi.Detection(bytes); DetectionResults.Add(baiduRet); var qcloudRet = QcloudAI.ImageAI.Detection(bytes); DetectionResults.Add(qcloudRet); // 阿里云平台,则需要先上传到他们的oss,然后再进行测试 var aliyunApi = new AliyunAI.ImageAI(); var url = aliyunApi.UploadFile(file.FileName.Replace(" ", ""), bytes); var aliyunRet = aliyunApi.Detection(url); DetectionResults.Add(aliyunRet); aliyunApi.DeleteFile(file.FileName); ImageBase64 = Convert.ToBase64String(bytes); } } else if (!string.IsNullOrEmpty(imageUrl)) { var webclient = new WebClient(); var bytes = webclient.DownloadData(imageUrl); if (bytes.Length > 0) { bytes = ReSizeImageFile(bytes); var baiduApi = new BaiduAI.ImageAI(); var baiduRet = baiduApi.Detection(bytes); DetectionResults.Add(baiduRet); var qcloudRet = QcloudAI.ImageAI.Detection(bytes); DetectionResults.Add(qcloudRet); var aliyunApi = new AliyunAI.ImageAI(); var aliyunRet = aliyunApi.Detection(imageUrl); DetectionResults.Add(aliyunRet); ImageBase64 = Convert.ToBase64String(bytes); } } else { ErrorMessage = "上传图片或者url,你总得设置一个吧"; } }