簡體   English   中英

在Android中使用OpenCV加載圖像

[英]Loading an image using OpenCV in Android

如果本網站已經涵蓋了這個問題,我很抱歉,但我似乎找不到直截了當的答案。 我正在制作一個Android應用程序,它使用OpenCV拍攝照片,處理它以檢測物體,並找出場景中這些物體的坐標。

我為android找到的所有教程似乎都是實時處理相機預覽或使用c ++,我更傾向於不必走c ++之路。 我確定我錯過了一些簡單的東西,但我不知道它是什么。

另一方面,我試圖檢測的物體是桌子上的台球。 什么是最好的預處理技術,以更好地檢測球? 我使用canny方法進行了快速測試,似乎從球上反射的光線破壞了圓形。

要在Android中加載圖像,您可以使用

Bitmap bMap=BitmapFactory.decodeResource(getResources(),R.drawable.image1)

其中image1是Android項目的Resources文件夾下的圖像。 然后使用android-opencv中的 matToBitmap或MatToBitmap方法將Bitmap轉換為字節或Mat並使用C ++(OpenCV)或Java進行處理。

如果你習慣使用Mat數據類型進行處理,你可以使用(你需要android-opencv項目來使用它)

Mat m = Highgui.imread("/media/path_to_image");

你可以使用blob,hough circle來檢測台球。 沒有辦法回答這個問題。 您可以嘗試使用標准化的RGB或Lab顏色空間來游戲(去除台球的反射),看看你是否檢測到了台球(通過運行霍夫圈,斑點探測器)。

實時場景將要求您使用機器學習技術通過使用某些特征向量來檢測台球,然后進行訓練和測試。

這對我有用(從這里得到答案: 如何使用OpenCV在Android中獲取可繪制輸入的Mat

Mat img = null;
try {
    img = Utils.loadResource(this, R.drawable.image_id, CvType.CV_8UC4);
} catch (IOException e) {
    e.printStackTrace();
}

我知道為時已晚,但有人可能會使用此功能。

Highgui已從opencv for android中刪除。

您可以使用Imgcodes代替。

Mat BGRMat = Imgcodecs.imread(getResources().getDrawable(R.drawable.img).toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM