2017-04-25 105 views
0

我有我的系統的mat圖像,我想能夠將其存儲在我的sqlite數據庫。所以我想我需要嘗試將它轉換爲一個字節數組來存儲它。但後來林不知道這是正確的,因爲我不確定如何使用我得到的價值,如果我從數據庫訪問它能夠將其恢復到其原始的圖像。 下面是我想出迄今:如何將Mat轉換爲字節數組,存儲該值然後再將其轉換回來? java opencv

static byte[] matToByte(Mat mat) throws SQLException { 
    int length = (int) (mat.total()*mat.elemSize()); 
    byte buffer[] = new byte[length]; 
    int converted = mat.get(0, 0, buffer); 

    IrisInitialDatabase.addFeatures(converted); 

    return buffer; 

} 

static Mat byteToMat(byte[] value) { 
    Mat m = new Mat(); 
    m.put(0, 0, value); 

    return m; 
} 

謝謝:)

回答

0

保存它以Base64格式的數據庫。

  1. 墊爲位圖

    Bitmap image = Bitmap.createBitmap(rgba.cols(), 
         rgba.rows(), Bitmap.Config.RGB_565); 
    
    Utils.matToBitmap(rgba, image); 
    
    Bitmap bitmap = (Bitmap) image; 
    bitmap = Bitmap.createScaledBitmap(bitmap, 600, 450, false); 
    
  2. 位圖字節數組

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
    byte[] byteArray = byteArrayOutputStream .toByteArray(); 
    

---保存到數據庫---

  • GET墊回

    m = Highgui.imdecode(new MatOfByte(Base64.decode(base64ImageFromDB,0)),Highgui.IMREAD_UNCHANGED); 
    
  • +0

    謝謝你,我似乎並沒有把位圖類型,你知道我可以得到它,我不認爲它是包含在我的OpenCV的lib – LiL

    +0

    位圖是默認的Android庫 https://developer.android.com/reference/android/graphics/Bitmap.html 剛剛導入 '進口android.graphics.Bitmap;' – tompadre

    +0

    我很高興它的工作原理,請記住我答案是正確的。 :) – tompadre

    相關問題