【发布时间】:2020-02-27 01:52:05
【问题描述】:
我正在尝试使用 Azure API Vision 来读取图像上的文本,它运行良好。 但是在添加了一些代码来检测我的图像是否为黑色(无文本)之后,我从 Azure API 收到了一个错误:“Bad Request”。 当我不想使用我的小功能检测黑色时,它又可以工作了。
我想那是因为我的流在另一个对象中转换但我不知道是什么对象...
这是我的代码:
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 流,但它不起作用。
感谢您的帮助
【问题讨论】:
-
尝试将图像保存到本地硬盘并检查是否可以打开它(通过图像查看器/Windows 资源管理器/绘图)
-
@ThiagoCustodio 在“IsBlack”过程之后?还是之前?
-
在 IsBlack 方法中。只是为了确保它没有损坏
-
@ThiagoCustodio 我把 "image.Save("test.bmp");"我可以打开它