如何将C#格式的图像发送到由OpenCV解码的Flask服务器?

2024-09-27 00:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的Python Flask API的一部分:

image_data = flask.request.get_data() # image_data's data type
string image_vector = numpy.frombuffer(image_data, dtype=numpy.uint8) 
image = cv2.imdecode(image_vector, cv2.IMREAD_COLOR)  

我将如何发送我编码的图像,如下面的C#:

        ResultString = "Loading...";
        var surface = SKSurface.Create(new SKImageInfo((int)canvasView.CanvasSize.Width,
                                        (int)canvasView.CanvasSize.Height));
        var canvas = surface.Canvas;
        canvas.Clear();

        foreach (SKPath path in completedPaths)
            canvas.DrawPath(path, paint);

        foreach (SKPath path in inProgressPaths.Values)
            canvas.DrawPath(path, paint);

        canvas.Flush();

        var snap = surface.Snapshot();
        var pngImage = snap.Encode(SKEncodedImageFormat.Png, 100);
        AnalyerResults analyerResults = mathclient.AnalyzeWork(pngImage);
        try { ResultString = analyerResults.message; } catch { ResultString = "Error..."; } 

我如何将图像发送到C#中,以便能够像我的部分API中所示那样接收和解码? 我已经试过了:

HttpClient client = await GetClient();
var result = await client.PostAsync(Url + "analyzer", new ByteArrayContent(pngImage.ToArray()));
return JsonConvert.DeserializeObject<AnalyerResults>(await result.Content.ReadAsStringAsync());

我还尝试:

var client = new RestClient(Url + "analyzer");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "image/png");
request.AddParameter("image/png", pngImage, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
return JsonConvert.DeserializeObject<AnalyerResults>(response.Content);

但是,在这两种情况下,内容都返回null。这个问题与How to Replicate this Postman Request which has a Binary Content Body and contains a .PNG File in C#?有关


Tags: pathinimageclientnewdatarequestvar

热门问题