/// <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,你总得设置一个吧";
            }
        }