2014-10-16 1 views
-1

Microsoft의 OCR 라이브러리에서 작업 중이며 BitmapImage를 픽셀 배열로 변환하는 데 문제가 있습니다.Microsoft OCR 용 비트 맵을 픽셀 배열로 변환 C#

Windows Phone 8 용으로이 응용 프로그램을 만들고 WriteableBitmap.PixelBuffer.ToArray()가 옵션이 아니므로 정상적인 BitmapImage를 OCR로 공급할 수 있도록 바이트 맵으로 변경하는 정적 함수가 있습니다. 엔진.

글쎄, 내가 응용 프로그램에서 피드를 먹을 때마다. 여기 뭐가 잘못 됐니?

여기 여기에 응용 프로그램이 충돌을 일으키는 OCR 방식의 코드 조각 비트 맵 변환

public static class ByteArrayChange 
    { 
     public static byte[] ConvertToBytes(this BitmapImage bitmapImage) 
     { 
      byte[] data = null; 
      using (MemoryStream stream = new MemoryStream()) 
      { 
       WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage); 
       wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100); 
       stream.Seek(0, SeekOrigin.Begin); 
       data = stream.GetBuffer(); 
      } 

      return data; 
     } 
    } 

내 정적 클래스입니다.

byte[] pa = ByteArrayChange.ConvertToBytes(bitmap); 

      //Here Is he problem 
      var ocrResult = await ocrEngine.RecognizeAsync((uint)bitmap.PixelHeight, (uint)bitmap.PixelWidth, pa); 

내가 뭘 잘못하고 있니? 감사합니다.

+0

['RecognizeAsync'] (http://msdn.microsoft.com/en-us/library/windowspreview.media.ocr.ocrengine.recognizeasync.aspx)는 "BGRA8 형식의 이미지 바이트를 사용합니다. " JPG 형식의 바이트 배열을 전달하고 있습니다. – dbc

+0

'WriteableBitmap'은 ['Pixels']을 가지고 있습니다. (http://msdn.microsoft.com/en-us/library/windows/apps/system.windows.media.imaging.writeablebitmap.pixels%28v=vs.105% 29.aspx) 속성. 너가 원하는게 그거야? – dbc

+0

Dbc, BGRA8 형식으로 변환하려면 어떻게해야합니까? Pixable이 WP8 프레임 워크에서 같은 것이 아니라면 WriteableBitmap에 대해 PixelBuffer 속성이 필요합니다. – user2536897

답변

3

이미지를 JPEG로 저장하고 있지만 OCR 라이브러리가 RGB/BGRA를 입력으로 사용할 수 있다는 것은 확실합니다. 그런데 Pixels 속성을 사용하지 않으시겠습니까? 이미지를 BGRA 배열로 나타내므로 필요한 것은 배열을 byte[] 배열로 변환하는 것입니다.

+0

바이트 배열로 변환하려면 어떻게해야합니까? – user2536897

+0

@ user2536897 먼저 Google에 도전 해 보셨나요? http://stackoverflow.com/a/1964892 –

+0

감사합니다! 나는 일할 수있어! – user2536897

관련 문제