【问题标题】:stream.readtimeout threw an exception of type 'system.invalidoperationexception'stream.readtimeout 引发了“system.invalidoperationexception”类型的异常
【发布时间】:2020-04-04 13:02:37
【问题描述】:

我正在使用 OpenCV 检测人脸并将人脸从图像帧中裁剪出来。裁剪后的图像需要通过人脸 API 发送到 Azure 进行人脸识别。 人脸 API 库 (Microsoft.CognitiveServices.Face) 有一个用于 Stream 的 Detect 函数和一个用于 URL 的函数。我选择 Stream 是因为我不想先上传图片(性能)。

当检测到一张(或多张)脸时,我的代码的以下部分会运行。检测到的FaceImage 是一个Mat。我正在尝试将此 Mat 转换为 Stream,以便可以将其发送到 Azure。

我根本没有收到任何错误,但是一旦我到达byte[] imageByte,应用程序就会停止工作。添加断点后,我注意到它显示的 imageStream 流:

stream.readtimeout 抛出类型异常 'system.invalidoperationexception'"。

所以我假设它无法读取 Stream,但我不明白为什么。我检查了 byte[] imageByte,它确实有一个值(不是 null),所以这部分似乎可以工作。

                    {
                        try
                        {
                            Console.WriteLine(faceRect.ToString());
                            var detectedFaceImage = new Mat(frame, faceRect);
                            byte[] imageByte = detectedFaceImage.ToBytes();
                            Stream imageStream = new MemoryStream(imageByte);
                            await GetFaceId(imageStream);
                        }
                        catch(Exception e)
                        {
                            Console.WriteLine(e);
                            throw e;
                        }
                    }


                    System.Threading.Thread.Sleep(5000);
                    Console.WriteLine(faces);
                }
            }
        }

它没有任何作用。

【问题讨论】:

    标签: c# .net opencv


    【解决方案1】:

    如果您在 IDE 中检查了 CLR 异常,我想您可以看到更详细的异常消息。我明白这很明显,但是你传入的字节数组有问题:)。也许imageStream.Position = 0; 可以解决它,但我不确定。我需要更详细的异常消息。

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 2017-08-21
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多