如何将 Mat 转换为字节数组,存储值,然后再将其转换回来? java opencv
How to convert Mat to byte array, store the value and then convert it back again? java opencv
我的系统有一个 Mat 图像,我希望能够将它存储在我的 sqlite 数据库中。所以我想我需要尝试将它转换为字节数组以便能够存储它。但是后来我不确定这是对的,因为我不确定如果我要从数据库访问它以便能够将它转换回其原始 Mat 图像,如何使用我获得的值。
以下是我到目前为止的想法:
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;
}
谢谢:)
以Base64格式存入数据库
Mat 转位图
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);
位图到字节数组
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
---保存到数据库---
拿回垫子
m = Highgui.imdecode(new MatOfByte(Base64.decode(base64ImageFromDB,0)),Highgui.IMREAD_UNCHANGED);
我的系统有一个 Mat 图像,我希望能够将它存储在我的 sqlite 数据库中。所以我想我需要尝试将它转换为字节数组以便能够存储它。但是后来我不确定这是对的,因为我不确定如果我要从数据库访问它以便能够将它转换回其原始 Mat 图像,如何使用我获得的值。 以下是我到目前为止的想法:
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;
}
谢谢:)
以Base64格式存入数据库
Mat 转位图
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);
位图到字节数组
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); byte[] byteArray = byteArrayOutputStream .toByteArray();
---保存到数据库---
拿回垫子
m = Highgui.imdecode(new MatOfByte(Base64.decode(base64ImageFromDB,0)),Highgui.IMREAD_UNCHANGED);