C#在解码器操作之前调整位图图像

时间:2016-02-29 14:23:03

标签: c# xaml ocr

我试图创建一个小型OCR应用程序,我可以选择单词。我已经使用Microsoft示例实现了这个:

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    // Load image from install folder.
    var file = await Package.Current.InstalledLocation.GetFileAsync("photo.png");
    using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
    {
        // Create image decoder.
        var decoder = await BitmapDecoder.CreateAsync(stream);

        // Load bitmap.
        var bitmap = await decoder.GetSoftwareBitmapAsync();

        // Extract text from image.
        OcrResult result = await ocrEngine.RecognizeAsync(bitmap);

        // Display recognized text.
        OcrText.Text = result.Text;
    }
}

但是,我希望加载的图像适合屏幕,我只需创建一个BitmapImage,将其源设置为流并将Image元素的源应用于位图。这个问题是,OCR字的坐标没有与图像对齐,因为我认为从解码器创建的位图使用原始图像尺寸。如何纠正这个问题,以便OCR引擎使用的图像大小与Image元素相同?

我的代码来获取图像,并从以下位置获得OCR结果:

// Create a stream from the picked file
IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);

// Create a bitmap from the stream
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(stream);

this.imgDisplay.Source = bitmap;

// Create the decoder from the stream
var decoder = await BitmapDecoder.CreateAsync(stream);

// Get the SoftwareBitmap representation of the file
SoftwareBitmap sBitmap = await decoder.GetSoftwareBitmapAsync();    

mOcrResult = await mOcrEngine.RecognizeAsync(sBitmap);

0 个答案:

没有答案