2015-11-24 70 views
0

有沒有一種方法可以對Xamarin.Forms或Xamarin.Android中的圖像進行閾值處理?將圖像轉換爲黑白(不是灰度)

我想用android中的相機拍攝每張照片(一次一張),目前我正在使用xlabs拍攝相機。

我已經搜索,但我還沒有發現任何有用的東西。也許你們可以幫助我。 :)

+0

@willaien謝謝你的信息,但理想情況下,我想要的圖像只是黑色和白色,而不是灰度。這使文本更清晰,更易於使用OCR。 –

+0

你可以做到。我會告訴你如何。 – XTL

回答

1

所以要做到這一點,你可以使用OpenCV Library for Android

  1. 下載from here(用於如)版本3.0.0
  2. 現在,你需要添加Android Java Binding Library到您的Xamarin.Android項目(你也可以閱讀great article
  3. Android的Java綁定庫被添加到您的項目,您需要添加.jar,這是從OpenCV SDK通過documentation生成(但我已經爲你做了,這裏是link生成.jar)。
  4. 在你的Android的Java綁定庫 - >文件夾()添加現有的文件(即的.jar從第3步),還需要添加共享對象的Jar文件夾(從YourPathWhereIsStoreSDK /OpenCV-android-sdk/sdk/native/libs/armeabi...etc)。
    結果必然是與此類似:
    result of items
  5. 現在您的Xamarin.Android項目你必須把參考Android的Java綁定庫項目。
  6. 看到下面的代碼,你可以如何使用這個庫:)。

在你潑活動(或者MainActivity)補充一點:

//beware,that we need to INIT Only once,so better to put in SplashActivity 
    public MainActivity() 
      { 
       if (!OpenCVLoader.InitDebug()) 
       { 
        System.Console.WriteLine("Failed to INIT \n OpenCV Failure"); 
       } 
       else 
       { 
        System.Console.WriteLine("OpenCV INIT Succes"); 
       } 

      } 

現在,我們可以轉換圖像的B/W:

void ConvertImageToBW() 
    { 
     Mat MatToBW = new Mat(); 
     using (Bitmap SourceImg = Bitmap.CreateBitmap(BitmapFactory.DecodeFile(App._file.Path))) //App._file.Path - path of image that we have made by camera 
     { 
      if (SourceImg != null) 
      { 
       Utils.BitmapToMat(SourceImg,MatToBW); 
       //first we convert to grayscale 
       Imgproc.CvtColor(MatToBW, MatToBW, Imgproc.ColorRgb2gray); 
       //now converting to b/w 
       Imgproc.Threshold(MatToBW, MatToBW, 0.5 * 255, 255, Imgproc.ThreshBinary); 
       using(Bitmap newBitmap = Bitmap.CreateBitmap(MatToBW.Cols(),MatToBW.Rows(),Bitmap.Config.Argb8888)) 
       { 
        Utils.MatToBitmap(MatToBW, newBitmap); 
        //put result in your imageView, B/W Image 
        imageView.SetImageBitmap(newBitmap); 
       } 
      } 

     } 
    } 

現在只要用這個方法到您的OnActivityResult。
享受!

+0

這很有魅力,非常感謝。雖然我有一個問題,OpenCV不想初始化,我在Android Java綁定庫選項中將目標框架更改爲Android 4.4(Kit Kat),並且工作正常。 :D –

+0

@JonathanZúñiga不用客氣;) – XTL