c# - 流和 Azure API 愿景
问题描述
我正在尝试使用 Azure API Vision 来读取图像上的文本,并且效果很好。但是在添加了一些代码来检测我的图像是否为黑色(无文本)之后,我从 Azure API 收到了一个错误:“错误请求”。当我不想使用我的小功能来检测黑色时,它会再次起作用。
我想那是因为我的流在另一个对象中转换但我不知道是什么对象......
这是我的代码:
var streamImage = this.printScreenService.CaptureRegionToStream(screenRegion);
var isBlack = await this.IsBlack(streamImage);
if (isBlack)
{
return new OcrModel
{
IsBlack = true,
Texts = new[] { "" }
};
}
var localFileOcrResult = await this.client.RecognizePrintedTextInStreamAsync(true, streamImage, OcrLanguages.Fr);
-----
private bool IsBlack(Stream stream)
{
var image = new Bitmap(Image.FromStream(stream));
for (var h = 0; h < image.Height; h++)
{
for (var w = 0; w < image.Width; w++)
{
var color = image.GetPixel(w, h);
if ((color.R != color.G || color.G != color.B || color.R != color.B) && color.A != 0)
{
return false;
}
}
}
return true;
}
我尝试使用 CopyToAsync 流,但它不起作用。
谢谢你的帮助
解决方案
调用 IsBlack 方法后,应将流返回到位置 0:
var streamImage = this.printScreenService.CaptureRegionToStream(screenRegion);
var isBlack = await this.IsBlack(streamImage);
if (isBlack)
{
return new OcrModel
{
IsBlack = true,
Texts = new[] { "" }
};
}
streamImage.Position = 0; //this line
var localFileOcrResult = await this.client.RecognizePrintedTextInStreamAsync(true, streamImage, OcrLanguages.Fr);
推荐阅读
- json - 将json映射转换为xslt中的字符串
- c# - 强制主线程元素在另一个创建的线程中运行
- python-3.x - 如何使用 python 提取 HTML 文档的“alt”值?
- c# - 在 Excel 文件中复制带有图像的单元格范围
- python-3.x - 从现有数据库 SQLAlchemy 获取 DDL
- android-studio - 使用上传密钥为您的 Flutter 应用签名(Google Play 的应用签名)
- sql - 在 presto\spark 条件下爆炸
- swift -
如何导航到自定义单元格中的新页面? - azure - 无法在 Azure DevOps 管道中启动 docker 映像
- nimbella-commander - 如何在 Nimbella 上托管 GitHub 存储库