stream.readtimeout引发了类型为'system.invalidoperationexception'的异常

时间:2019-12-11 09:28:10

标签: c# .net opencv

我正在使用OpenCV来检测人脸并将其裁剪出图像帧。裁剪的图像需要通过Face API发送到Azure以进行面部识别。 Face API库(Microsoft.CognitiveServices.Face)具有用于Stream的检测功能和用于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);
                }
            }
        }

它什么也没做。

1 个答案:

答案 0 :(得分:0)

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