有沒有一種方法可以對Xamarin.Forms或Xamarin.Android中的圖像進行閾值處理?將圖像轉換爲黑白(不是灰度)
我想用android中的相機拍攝每張照片(一次一張),目前我正在使用xlabs拍攝相機。
我已經搜索,但我還沒有發現任何有用的東西。也許你們可以幫助我。 :)
有沒有一種方法可以對Xamarin.Forms或Xamarin.Android中的圖像進行閾值處理?將圖像轉換爲黑白(不是灰度)
我想用android中的相機拍攝每張照片(一次一張),目前我正在使用xlabs拍攝相機。
我已經搜索,但我還沒有發現任何有用的東西。也許你們可以幫助我。 :)
所以要做到這一點,你可以使用OpenCV Library for Android。
在你潑活動(或者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。
享受!
這很有魅力,非常感謝。雖然我有一個問題,OpenCV不想初始化,我在Android Java綁定庫選項中將目標框架更改爲Android 4.4(Kit Kat),並且工作正常。 :D –
@JonathanZúñiga不用客氣;) – XTL
@willaien謝謝你的信息,但理想情況下,我想要的圖像只是黑色和白色,而不是灰度。這使文本更清晰,更易於使用OCR。 –
你可以做到。我會告訴你如何。 – XTL